diff options
author | Vitor Anjos <vitorbartier@hotmail.com> | 2020-06-27 15:07:32 -0300 |
---|---|---|
committer | Ulysses Souza <ulysses.souza@docker.com> | 2020-08-10 10:32:45 +0200 |
commit | 17b41b27a8ab23797f5db9c0df23e1a247ebf4cc (patch) | |
tree | ba79ffab4d5640cd5751ef1a8248cd58f7a53a0a | |
parent | b23eb2deab5695f0749902fb127d91f5ca16f051 (diff) |
Ignore build context path validation when it is not necessary
Signed-off-by: Vitor Anjos <vitorbartier@hotmail.com>
-rw-r--r-- | compose/config/config.py | 15 | ||||
-rw-r--r-- | tests/acceptance/cli_test.py | 14 | ||||
-rw-r--r-- | tests/fixtures/no-build/docker-compose.yml | 8 |
3 files changed, 36 insertions, 1 deletions
diff --git a/compose/config/config.py b/compose/config/config.py index 90baeeaa..c7cc7240 100644 --- a/compose/config/config.py +++ b/compose/config/config.py @@ -729,9 +729,22 @@ def validate_extended_service_dict(service_dict, filename, service): def validate_service(service_config, service_names, config_file): + def build_image(): + args = sys.argv[1:] + if 'pull' in args: + return False + + if '--no-build' in args: + return False + + return True + service_dict, service_name = service_config.config, service_config.name validate_service_constraints(service_dict, service_name, config_file) - validate_paths(service_dict) + + if build_image(): + # We only care about valid paths when actually building images + validate_paths(service_dict) validate_cpu(service_config) validate_ulimits(service_config) diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py index dd43e00c..92168e93 100644 --- a/tests/acceptance/cli_test.py +++ b/tests/acceptance/cli_test.py @@ -748,6 +748,20 @@ services: assert BUILD_CACHE_TEXT not in result.stdout assert BUILD_PULL_TEXT not in result.stdout + def test_up_ignore_missing_build_directory(self): + self.base_dir = 'tests/fixtures/no-build' + result = self.dispatch(['up', '--no-build']) + + assert 'alpine exited with code 0' in result.stdout + self.base_dir = None + + def test_pull_ignore_missing_build_directory(self): + self.base_dir = 'tests/fixtures/no-build' + result = self.dispatch(['pull']) + + assert 'Pulling my-alpine' in result.stderr + self.base_dir = None + def test_build_pull(self): # Make sure we have the latest busybox already pull_busybox(self.client) diff --git a/tests/fixtures/no-build/docker-compose.yml b/tests/fixtures/no-build/docker-compose.yml new file mode 100644 index 00000000..5de4d9b6 --- /dev/null +++ b/tests/fixtures/no-build/docker-compose.yml @@ -0,0 +1,8 @@ +version: "3" +services: + my-alpine: + image: alpine:3.12 + container_name: alpine + entrypoint: 'echo It works!' + build: + context: /this/path/doesnt/exists # and we don't really care. We just want to run containers already pulled. |