浏览代码

Merge pull request #7199 from ulyssessouza/fix-exec-dotenv

Remove `None` entries on exec command
Ulysses Souza 5 年之前
父节点
当前提交
d9af02eddf
共有 3 个文件被更改,包括 23 次插入1 次删除
  1. 6 1
      compose/cli/main.py
  2. 11 0
      tests/acceptance/cli_test.py
  3. 6 0
      tests/fixtures/exec-novalue-var/docker-compose.yml

+ 6 - 1
compose/cli/main.py

@@ -1466,7 +1466,12 @@ def call_docker(args, dockeropts, environment):
     args = [executable_path] + tls_options + args
     log.debug(" ".join(map(pipes.quote, args)))
 
-    return subprocess.call(args, env=environment)
+    filtered_env = {}
+    for k, v in environment.items():
+        if v is not None:
+            filtered_env[k] = environment[k]
+
+    return subprocess.call(args, env=filtered_env)
 
 
 def parse_scale_args(options):

+ 11 - 0
tests/acceptance/cli_test.py

@@ -1711,6 +1711,17 @@ services:
         assert stderr == ""
         assert stdout == "/\n"
 
+    @mock.patch.dict(os.environ)
+    def test_exec_novalue_var_dotenv_file(self):
+        os.environ['MYVAR'] = 'SUCCESS'
+        self.base_dir = 'tests/fixtures/exec-novalue-var'
+        self.dispatch(['up', '-d'])
+        assert len(self.project.containers()) == 1
+
+        stdout, stderr = self.dispatch(['exec', '-T', 'nginx', 'env'])
+        assert 'CHECK_VAR=SUCCESS' in stdout
+        assert not stderr
+
     def test_exec_detach_long_form(self):
         self.base_dir = 'tests/fixtures/links-composefile'
         self.dispatch(['up', '--detach', 'console'])

+ 6 - 0
tests/fixtures/exec-novalue-var/docker-compose.yml

@@ -0,0 +1,6 @@
+version: '3'
+services:
+  nginx:
+    image: nginx
+    environment:
+      - CHECK_VAR=${MYVAR}