summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlysses Souza <ulysses.souza@docker.com>2019-07-31 01:58:16 +0200
committerUlysses Souza <ulysses.souza@docker.com>2019-07-31 02:09:41 +0200
commitb03889ac2a09e8ac6145b90015f0e4328d9928c4 (patch)
tree45cafba62ebeeb6bbbd05445dd9298525e03aa59
parent7a7c9ff67a9716831c4ec2fdfa099b91a6c1858f (diff)
Add integration tests regarding environment
This covers what was included in #6800 Signed-off-by: Ulysses Souza <ulysses.souza@docker.com>
-rw-r--r--tests/acceptance/cli_test.py10
-rw-r--r--tests/fixtures/env-file-override/.env.conf2
-rw-r--r--tests/fixtures/env-file-override/.env.override1
-rw-r--r--tests/fixtures/env-file-override/docker-compose.yml6
-rw-r--r--tests/integration/environment_test.py18
5 files changed, 34 insertions, 3 deletions
diff --git a/tests/acceptance/cli_test.py b/tests/acceptance/cli_test.py
index 3fd857f2..77b46c27 100644
--- a/tests/acceptance/cli_test.py
+++ b/tests/acceptance/cli_test.py
@@ -64,6 +64,12 @@ def wait_on_process(proc, returncode=0):
return ProcessResult(stdout.decode('utf-8'), stderr.decode('utf-8'))
+def dispatch(base_dir, options, project_options=None, returncode=0):
+ project_options = project_options or []
+ proc = start_process(base_dir, project_options + options)
+ return wait_on_process(proc, returncode=returncode)
+
+
def wait_on_condition(condition, delay=0.1, timeout=40):
start_time = time.time()
while not condition():
@@ -151,9 +157,7 @@ class CLITestCase(DockerClientTestCase):
return self._project
def dispatch(self, options, project_options=None, returncode=0):
- project_options = project_options or []
- proc = start_process(self.base_dir, project_options + options)
- return wait_on_process(proc, returncode=returncode)
+ return dispatch(self.base_dir, options, project_options, returncode)
def execute(self, container, cmd):
# Remove once Hijack and CloseNotifier sign a peace treaty
diff --git a/tests/fixtures/env-file-override/.env.conf b/tests/fixtures/env-file-override/.env.conf
new file mode 100644
index 00000000..90b8b495
--- /dev/null
+++ b/tests/fixtures/env-file-override/.env.conf
@@ -0,0 +1,2 @@
+WHEREAMI
+DEFAULT_CONF_LOADED=true
diff --git a/tests/fixtures/env-file-override/.env.override b/tests/fixtures/env-file-override/.env.override
new file mode 100644
index 00000000..398fa51b
--- /dev/null
+++ b/tests/fixtures/env-file-override/.env.override
@@ -0,0 +1 @@
+WHEREAMI=override
diff --git a/tests/fixtures/env-file-override/docker-compose.yml b/tests/fixtures/env-file-override/docker-compose.yml
new file mode 100644
index 00000000..fdae6d82
--- /dev/null
+++ b/tests/fixtures/env-file-override/docker-compose.yml
@@ -0,0 +1,6 @@
+version: '3.7'
+services:
+ test:
+ image: busybox
+ env_file: .env.conf
+ entrypoint: env
diff --git a/tests/integration/environment_test.py b/tests/integration/environment_test.py
index ac31d2e1..671e6531 100644
--- a/tests/integration/environment_test.py
+++ b/tests/integration/environment_test.py
@@ -7,7 +7,10 @@ from ddt import data
from ddt import ddt
from .. import mock
+from ..acceptance.cli_test import dispatch
+from compose.cli.command import get_project
from compose.cli.command import project_from_options
+from compose.config.environment import Environment
from tests.integration.testcases import DockerClientTestCase
@@ -50,3 +53,18 @@ services:
# So no need to have a proper options map, the `COMMAND` key is enough
project_from_options('.', options)
assert fake_log.warn.call_count == 0
+
+
+class EnvironmentOverrideFileTest(DockerClientTestCase):
+ def test_env_file_override(self):
+ base_dir = 'tests/fixtures/env-file-override'
+ dispatch(base_dir, ['--env-file', '.env.override', 'up'])
+ project = get_project(project_dir=base_dir,
+ config_path=['docker-compose.yml'],
+ environment=Environment.from_env_file(base_dir, '.env.override'),
+ override_dir=base_dir)
+ containers = project.containers(stopped=True)
+ assert len(containers) == 1
+ assert "WHEREAMI=override" in containers[0].get('Config.Env')
+ assert "DEFAULT_CONF_LOADED=true" in containers[0].get('Config.Env')
+ dispatch(base_dir, ['--env-file', '.env.override', 'down'], None)