mirror of
				https://github.com/thib8956/nginx-proxy
				synced 2025-10-31 17:19:21 +00:00 
			
		
		
		
	tests: Turn helper function into docker_compose_file fixture
				
					
				
			This makes it easier for tests to override the filename.
This commit is contained in:
		| @@ -322,31 +322,28 @@ def wait_for_nginxproxy_to_be_ready(): | |||||||
|             logging.debug("nginx-proxy ready") |             logging.debug("nginx-proxy ready") | ||||||
|             break |             break | ||||||
|  |  | ||||||
| def find_docker_compose_file(request): |  | ||||||
|     """ |  | ||||||
|     helper for fixture functions to figure out the name of the docker-compose file to consider. |  | ||||||
|  |  | ||||||
|     - if the test module provides a `docker_compose_file` variable, take that | @pytest.fixture(scope="module") | ||||||
|     - else, if a yaml file exists with the same name as the test module (but for the `.yml` extension), use that | def docker_compose_file(request): | ||||||
|     - otherwise use `docker-compose.yml`. |     """Fixture naming the docker-compose file to consider. | ||||||
|  |  | ||||||
|  |     If a YAML file exists with the same name as the test module (with the `.py` extension replaced | ||||||
|  |     with `.yml` or `.yaml`), use that.  Otherwise, use `docker-compose.yml` in the same directory | ||||||
|  |     as the test module. | ||||||
|  |  | ||||||
|  |     Tests can override this fixture to specify a custom location. | ||||||
|     """ |     """ | ||||||
|     test_module_dir = os.path.dirname(request.module.__file__) |     test_module_dir = os.path.dirname(request.module.__file__) | ||||||
|     yml_file = os.path.join(test_module_dir, request.module.__name__ + '.yml') |     yml_file = os.path.join(test_module_dir, request.module.__name__ + '.yml') | ||||||
|     yaml_file = os.path.join(test_module_dir, request.module.__name__ + '.yaml') |     yaml_file = os.path.join(test_module_dir, request.module.__name__ + '.yaml') | ||||||
|     default_file = os.path.join(test_module_dir, 'docker-compose.yml') |     default_file = os.path.join(test_module_dir, 'docker-compose.yml') | ||||||
|  |  | ||||||
|     docker_compose_file_module_variable = getattr(request.module, "docker_compose_file", None) |     if os.path.isfile(yml_file): | ||||||
|     if docker_compose_file_module_variable is not None: |         docker_compose_file = yml_file | ||||||
|         docker_compose_file = os.path.join( test_module_dir, docker_compose_file_module_variable) |     elif os.path.isfile(yaml_file): | ||||||
|         if not os.path.isfile(docker_compose_file): |         docker_compose_file = yaml_file | ||||||
|             raise ValueError(f"docker compose file {docker_compose_file!r} could not be found. Check your test module `docker_compose_file` variable value.") |  | ||||||
|     else: |     else: | ||||||
|         if os.path.isfile(yml_file): |         docker_compose_file = default_file | ||||||
|             docker_compose_file = yml_file |  | ||||||
|         elif os.path.isfile(yaml_file): |  | ||||||
|             docker_compose_file = yaml_file |  | ||||||
|         else: |  | ||||||
|             docker_compose_file = default_file |  | ||||||
|  |  | ||||||
|     if not os.path.isfile(docker_compose_file): |     if not os.path.isfile(docker_compose_file): | ||||||
|         logging.error("Could not find any docker-compose file named either '{0}.yml', '{0}.yaml' or 'docker-compose.yml'".format(request.module.__name__)) |         logging.error("Could not find any docker-compose file named either '{0}.yml', '{0}.yaml' or 'docker-compose.yml'".format(request.module.__name__)) | ||||||
| @@ -432,16 +429,15 @@ def ca_root_certificate(): | |||||||
|  |  | ||||||
|  |  | ||||||
| @pytest.fixture(scope="module") | @pytest.fixture(scope="module") | ||||||
| def docker_compose(request): | def docker_compose(docker_compose_file): | ||||||
|     """ |     """Ensures containers described in a docker compose file are started. | ||||||
|     pytest fixture providing containers described in a docker compose file. After the tests, remove the created containers |  | ||||||
|  |  | ||||||
|     A custom docker compose file name can be defined in a variable named `docker_compose_file`. |     A custom docker compose file name can be specified by overriding the `docker_compose_file` | ||||||
|  |     fixture. | ||||||
|  |  | ||||||
|     Also, in the case where pytest is running from a docker container, this fixture makes sure |     Also, in the case where pytest is running from a docker container, this fixture makes sure | ||||||
|     our container will be attached to all the docker networks. |     our container will be attached to all the docker networks. | ||||||
|     """ |     """ | ||||||
|     docker_compose_file = find_docker_compose_file(request) |  | ||||||
|     original_dns_resolver = monkey_patch_urllib_dns_resolver() |     original_dns_resolver = monkey_patch_urllib_dns_resolver() | ||||||
|     remove_all_containers() |     remove_all_containers() | ||||||
|     docker_compose_up(docker_compose_file) |     docker_compose_up(docker_compose_file) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user