| 1234567891011121314151617181920212223242526272829303132333435363738 | 
							- import ruamel.yaml
 
- def test_dev_docker_compose_has_same_services_as_build_server_configuration():
 
-     '''
 
-     The end-to-end test configuration for local development and the build server's test
 
-     configuration use two different mechanisms for configuring and spinning up "services"—the
 
-     database containers upon which the end-to-end tests are reliant. The dev configuration uses
 
-     Docker Compose, while the Drone build server configuration uses its own similar-but-different
 
-     configuration file format.
 
-     Therefore, to ensure dev-build parity, these tests assert that the services are the same across
 
-     the dev and build configurations. This includes service name, container image, environment
 
-     variables, and commands.
 
-     This test only compares services and does not assert anything else about the respective testing
 
-     environments.
 
-     '''
 
-     yaml = ruamel.yaml.YAML(typ='safe')
 
-     dev_services = {
 
-         name: service
 
-         for name, service in yaml.load(open('tests/end-to-end/docker-compose.yaml').read())[
 
-             'services'
 
-         ].items()
 
-         if name != 'tests'
 
-     }
 
-     build_server_services = tuple(yaml.load_all(open('.drone.yml').read()))[0]['services']
 
-     assert len(dev_services) == len(build_server_services)
 
-     for build_service in build_server_services:
 
-         dev_service = dev_services[build_service['name']]
 
-         assert dev_service['image'] == build_service['image']
 
-         assert dev_service['environment'] == build_service['environment']
 
-         if 'command' in dev_service or 'commands' in build_service:
 
-             assert len(build_service['commands']) <= 1
 
-             assert dev_service['command'] == build_service['commands'][0]
 
 
  |