6 new commits in tox:

https://bitbucket.org/hpk42/tox/commits/a9f2579c2505/
Changeset:   a9f2579c2505
Branch:      fix_env_use
User:        itxaka
Date:        2015-08-23 18:50:15+00:00
Summary:     If the {env:key:default} paremeter is found in the config but 
there are no environment variables yet, fall back to the current section setenv 
variables
Affected #:  1 file

diff -r 3ed5dc353a99acf57859a2dd265b5c2e973480e3 -r 
a9f2579c2505ddfac7201dda089d6c47ae8acf81 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -903,6 +903,7 @@
         return '\n'.join(filter(None, map(factor_line, lines)))
 
     def _replace_env(self, match):
+        env_list = self._build_envs_list()
         match_value = match.group('substitution_value')
         if not match_value:
             raise tox.exception.ConfigError(
@@ -917,11 +918,21 @@
             envkey = match_value
 
         if envkey not in os.environ and default is None:
-            raise tox.exception.ConfigError(
-                "substitution env:%r: unknown environment variable %r" %
-                (envkey, envkey))
+            if envkey not in env_list and default is None:
+                raise tox.exception.ConfigError(
+                    "substitution env:%r: unknown environment variable %r" %
+                    (envkey, envkey))
+        if envkey in os.environ:
+            return os.environ.get(envkey, default)
+        else:
+            return env_list.get(envkey, default)
 
-        return os.environ.get(envkey, default)
+    def _build_envs_list(self):
+        full_envs = self._cfg[self.section_name].get('setenv')
+        if full_envs:
+            return {k.split('=')[0]: k.split('=')[1] for k in 
full_envs.split('\n')}
+        else:
+            return {}
 
     def _substitute_from_other_section(self, key):
         if key.startswith("[") and "]" in key:


https://bitbucket.org/hpk42/tox/commits/cbd7d04d37b5/
Changeset:   cbd7d04d37b5
Branch:      fix_env_use
User:        itxaka
Date:        2015-08-24 07:58:06+00:00
Summary:     if there is no setenv section, return an empty dict
Affected #:  1 file

diff -r a9f2579c2505ddfac7201dda089d6c47ae8acf81 -r 
cbd7d04d37b59a0c46620195538b57b9a8ae0303 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -928,7 +928,7 @@
             return env_list.get(envkey, default)
 
     def _build_envs_list(self):
-        full_envs = self._cfg[self.section_name].get('setenv')
+        full_envs = self._cfg[self.section_name].get('setenv', False)
         if full_envs:
             return {k.split('=')[0]: k.split('=')[1] for k in 
full_envs.split('\n')}
         else:


https://bitbucket.org/hpk42/tox/commits/ab76209b4106/
Changeset:   ab76209b4106
Branch:      fix_env_use
User:        itxaka
Date:        2015-08-31 09:26:00+00:00
Summary:     Add tests
Affected #:  1 file

diff -r cbd7d04d37b59a0c46620195538b57b9a8ae0303 -r 
ab76209b41064bcfd9fe9d67e422487daaca9cd0 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -254,6 +254,28 @@
             ["echo", "cmd", "1", "2", "3", "4", "cmd", "2"],
         ]
 
+    def test_command_env_substitution(self, newconfig):
+        """Ensure referenced {env:key:default} values are substituted 
correctly."""
+        config = newconfig("""
+           [testenv:py27]
+           setenv =
+             TEST=testvalue
+           commands =
+             ls {env:TEST}
+        """)
+        reader = SectionReader("testenv:py27", config._cfg)
+        x = reader.getargvlist("commands")
+        assert x == [
+            "ls testvalue".split()
+        ]
+        assert x != [
+            "ls {env:TEST}".split()
+        ]
+        y = reader.getargvlist("setenv")
+        assert y == [
+            "TEST=testvalue".split()
+        ]
+
 
 class TestIniParser:
     def test_getstring_single(self, tmpdir, newconfig):


https://bitbucket.org/hpk42/tox/commits/b611c45a558b/
Changeset:   b611c45a558b
Branch:      fix_env_use
User:        itxaka
Date:        2015-08-31 13:08:54+00:00
Summary:     better workflow, picks the resolved envs instead of the written 
string
Affected #:  1 file

diff -r ab76209b41064bcfd9fe9d67e422487daaca9cd0 -r 
b611c45a558b9c15687bd5e198a1ba04a0a55067 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -928,11 +928,12 @@
             return env_list.get(envkey, default)
 
     def _build_envs_list(self):
-        full_envs = self._cfg[self.section_name].get('setenv', False)
-        if full_envs:
-            return {k.split('=')[0]: k.split('=')[1] for k in 
full_envs.split('\n')}
-        else:
-            return {}
+        full_envs = self.getargvlist('setenv')
+        return_data = {}
+        for item in full_envs:
+            splitted = " ".join(item).split("=")
+            return_data[splitted[0]] = splitted[1]
+        return return_data
 
     def _substitute_from_other_section(self, key):
         if key.startswith("[") and "]" in key:


https://bitbucket.org/hpk42/tox/commits/d21e7d2340a0/
Changeset:   d21e7d2340a0
Branch:      fix_env_use
User:        itxaka
Date:        2015-10-30 08:49:50+00:00
Summary:     use self.getdict('setenv') instead of extra parsing that fails
Affected #:  1 file

diff -r b611c45a558b9c15687bd5e198a1ba04a0a55067 -r 
d21e7d2340a0351b730daa8824786ef666a89e28 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -903,7 +903,7 @@
         return '\n'.join(filter(None, map(factor_line, lines)))
 
     def _replace_env(self, match):
-        env_list = self._build_envs_list()
+        env_list = self.getdict('setenv')
         match_value = match.group('substitution_value')
         if not match_value:
             raise tox.exception.ConfigError(
@@ -927,14 +927,6 @@
         else:
             return env_list.get(envkey, default)
 
-    def _build_envs_list(self):
-        full_envs = self.getargvlist('setenv')
-        return_data = {}
-        for item in full_envs:
-            splitted = " ".join(item).split("=")
-            return_data[splitted[0]] = splitted[1]
-        return return_data
-
     def _substitute_from_other_section(self, key):
         if key.startswith("[") and "]" in key:
             i = key.find("]")


https://bitbucket.org/hpk42/tox/commits/763eeed49a7c/
Changeset:   763eeed49a7c
User:        hpk42
Date:        2015-10-30 09:26:00+00:00
Summary:     Merged in itxaka/tox/fix_env_use (pull request #169)

Tries to fix #99
Affected #:  2 files

diff -r 7e30b4b4591bb51fae92791a60adc98fe21733bb -r 
763eeed49a7c572a9c31940932cfbeaff8d32ab1 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -254,6 +254,28 @@
             ["echo", "cmd", "1", "2", "3", "4", "cmd", "2"],
         ]
 
+    def test_command_env_substitution(self, newconfig):
+        """Ensure referenced {env:key:default} values are substituted 
correctly."""
+        config = newconfig("""
+           [testenv:py27]
+           setenv =
+             TEST=testvalue
+           commands =
+             ls {env:TEST}
+        """)
+        reader = SectionReader("testenv:py27", config._cfg)
+        x = reader.getargvlist("commands")
+        assert x == [
+            "ls testvalue".split()
+        ]
+        assert x != [
+            "ls {env:TEST}".split()
+        ]
+        y = reader.getargvlist("setenv")
+        assert y == [
+            "TEST=testvalue".split()
+        ]
+
 
 class TestIniParser:
     def test_getstring_single(self, tmpdir, newconfig):

diff -r 7e30b4b4591bb51fae92791a60adc98fe21733bb -r 
763eeed49a7c572a9c31940932cfbeaff8d32ab1 tox/config.py
--- a/tox/config.py
+++ b/tox/config.py
@@ -902,6 +902,7 @@
         return '\n'.join(filter(None, map(factor_line, lines)))
 
     def _replace_env(self, match):
+        env_list = self.getdict('setenv')
         match_value = match.group('substitution_value')
         if not match_value:
             raise tox.exception.ConfigError(
@@ -916,11 +917,14 @@
             envkey = match_value
 
         if envkey not in os.environ and default is None:
-            raise tox.exception.ConfigError(
-                "substitution env:%r: unknown environment variable %r" %
-                (envkey, envkey))
-
-        return os.environ.get(envkey, default)
+            if envkey not in env_list and default is None:
+                raise tox.exception.ConfigError(
+                    "substitution env:%r: unknown environment variable %r" %
+                    (envkey, envkey))
+        if envkey in os.environ:
+            return os.environ.get(envkey, default)
+        else:
+            return env_list.get(envkey, default)
 
     def _substitute_from_other_section(self, key):
         if key.startswith("[") and "]" in key:

Repository URL: https://bitbucket.org/hpk42/tox/

--

This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
_______________________________________________
pytest-commit mailing list
pytest-commit@python.org
https://mail.python.org/mailman/listinfo/pytest-commit

Reply via email to