summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorholger krekel <holger@merlinux.eu>2015-06-19 11:10:16 +0200
committerholger krekel <holger@merlinux.eu>2015-06-19 11:10:16 +0200
commite02c4c5ff807fd88893ae45529e12ec1d02d9330 (patch)
treec58a9cc45ac1909a9a0f9e2918fbce185577079b
parent8c7dbd8d2e1f03b977b0a716b0936fff5f08e37b (diff)
parentc779525b35d991ffd0c81e3023e7462c00558a49 (diff)
downloadtox-e02c4c5ff807fd88893ae45529e12ec1d02d9330.tar.gz
Merged in stefano-m/tox/passenv_multiline (pull request #166)
Issue #259 passenv statement should accept multi-line list
-rw-r--r--tests/test_config.py58
-rw-r--r--tox/config.py7
2 files changed, 60 insertions, 5 deletions
diff --git a/tests/test_config.py b/tests/test_config.py
index 4522f87..fae1bde 100644
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -696,14 +696,45 @@ class TestConfigTestEnv:
assert envconfig.setenv['ANOTHER_VAL'] == 'else'
@pytest.mark.parametrize("plat", ["win32", "linux2"])
- def test_passenv(self, tmpdir, newconfig, monkeypatch, plat):
+ def test_passenv_as_multiline_list(self, tmpdir, newconfig, monkeypatch, plat):
monkeypatch.setattr(sys, "platform", plat)
monkeypatch.setenv("A123A", "a")
monkeypatch.setenv("A123B", "b")
monkeypatch.setenv("BX23", "0")
config = newconfig("""
[testenv]
- passenv = A123* B?23
+ passenv =
+ A123*
+ # isolated comment
+ B?23
+ """)
+ assert len(config.envconfigs) == 1
+ envconfig = config.envconfigs['python']
+ if plat == "win32":
+ assert "PATHEXT" in envconfig.passenv
+ assert "SYSTEMDRIVE" in envconfig.passenv
+ assert "SYSTEMROOT" in envconfig.passenv
+ assert "TEMP" in envconfig.passenv
+ assert "TMP" in envconfig.passenv
+ else:
+ assert "TMPDIR" in envconfig.passenv
+ assert "PATH" in envconfig.passenv
+ assert "PIP_INDEX_URL" in envconfig.passenv
+ assert "LANG" in envconfig.passenv
+ assert "A123A" in envconfig.passenv
+ assert "A123B" in envconfig.passenv
+
+ @pytest.mark.parametrize("plat", ["win32", "linux2"])
+ def test_passenv_as_space_separated_list(self, tmpdir, newconfig, monkeypatch, plat):
+ monkeypatch.setattr(sys, "platform", plat)
+ monkeypatch.setenv("A123A", "a")
+ monkeypatch.setenv("A123B", "b")
+ monkeypatch.setenv("BX23", "0")
+ config = newconfig("""
+ [testenv]
+ passenv =
+ # comment
+ A123* B?23
""")
assert len(config.envconfigs) == 1
envconfig = config.envconfigs['python']
@@ -724,20 +755,39 @@ class TestConfigTestEnv:
def test_passenv_with_factor(self, tmpdir, newconfig, monkeypatch):
monkeypatch.setenv("A123A", "a")
monkeypatch.setenv("A123B", "b")
+ monkeypatch.setenv("A123C", "c")
+ monkeypatch.setenv("A123D", "d")
monkeypatch.setenv("BX23", "0")
+ monkeypatch.setenv("CCA43", "3")
+ monkeypatch.setenv("CB21", "4")
config = newconfig("""
[tox]
envlist = {x1,x2}
[testenv]
passenv =
- x1: A123A
- x2: A123B
+ x1: A123A CC*
+ x1: CB21
+ # passed to both environments
+ A123C
+ x2: A123B A123D
""")
assert len(config.envconfigs) == 2
+
assert "A123A" in config.envconfigs["x1"].passenv
+ assert "A123C" in config.envconfigs["x1"].passenv
+ assert "CCA43" in config.envconfigs["x1"].passenv
+ assert "CB21" in config.envconfigs["x1"].passenv
assert "A123B" not in config.envconfigs["x1"].passenv
+ assert "A123D" not in config.envconfigs["x1"].passenv
+ assert "BX23" not in config.envconfigs["x1"].passenv
+
assert "A123B" in config.envconfigs["x2"].passenv
+ assert "A123D" in config.envconfigs["x2"].passenv
assert "A123A" not in config.envconfigs["x2"].passenv
+ assert "A123C" in config.envconfigs["x2"].passenv
+ assert "CCA43" not in config.envconfigs["x2"].passenv
+ assert "CB21" not in config.envconfigs["x2"].passenv
+ assert "BX23" not in config.envconfigs["x2"].passenv
def test_changedir_override(self, tmpdir, newconfig):
config = newconfig("""
diff --git a/tox/config.py b/tox/config.py
index 5345ce3..062992e 100644
--- a/tox/config.py
+++ b/tox/config.py
@@ -381,6 +381,11 @@ def tox_addoption(parser):
help="list of X=Y lines with environment variable settings")
def passenv(testenv_config, value):
+ # Flatten the list to deal with space-separated values.
+ value = list(
+ itertools.chain.from_iterable(
+ [x.split(' ') for x in value]))
+
passenv = set(["PATH", "PIP_INDEX_URL", "LANG"])
# we ensure that tmp directory settings are passed on
@@ -402,7 +407,7 @@ def tox_addoption(parser):
return passenv
parser.add_testenv_attribute(
- name="passenv", type="space-separated-list", postprocess=passenv,
+ name="passenv", type="line-list", postprocess=passenv,
help="environment variables needed during executing test commands "
"(taken from invocation environment). Note that tox always "
"passes through some basic environment variables which are "