Skip to content

Commit 55a72ae

Browse files
authored
Merge pull request #597 from cboylan/fix-env-sub
Don't attempt to parse dicts if not replacing
2 parents a766e06 + cd80409 commit 55a72ae

File tree

2 files changed

+16
-14
lines changed

2 files changed

+16
-14
lines changed

tests/test_config.py

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -345,15 +345,16 @@ def test_command_env_substitution_global(self, newconfig):
345345
assert envconfig.commands == [["echo", "bar"]]
346346

347347
def test_reproduce_issue595(self, newconfig):
348-
with pytest.raises(ValueError):
349-
newconfig("""
350-
[tox]
351-
envlist = spam
352-
[testenv]
353-
setenv = DONTCARE = 0
354-
[testenv:eggs]
355-
setenv = {[testenv]setenv}
356-
""")
348+
config = newconfig("""
349+
[tox]
350+
envlist = spam
351+
[testenv]
352+
setenv = DONTCARE = 0
353+
[testenv:eggs]
354+
setenv = {[testenv]setenv}
355+
sitepackages = {[testenv]sitepackages}
356+
""")
357+
assert config.envlist == ['spam']
357358

358359

359360
class TestIniParser:

tox/config.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -957,16 +957,17 @@ def getlist(self, name, sep="\n"):
957957

958958
def getdict(self, name, default=None, sep="\n", replace=True):
959959
value = self.getstring(name, None, replace=replace)
960-
return self._getdict(value, default=default, sep=sep)
960+
return self._getdict(value, default=default, sep=sep, replace=replace)
961961

962962
def getdict_setenv(self, name, default=None, sep="\n", replace=True):
963963
value = self.getstring(name, None, replace=replace, crossonly=True)
964-
definitions = self._getdict(value, default=default, sep=sep)
964+
definitions = self._getdict(value, default=default, sep=sep,
965+
replace=replace)
965966
self._setenv = SetenvDict(definitions, reader=self)
966967
return self._setenv
967968

968-
def _getdict(self, value, default, sep):
969-
if value is None:
969+
def _getdict(self, value, default, sep, replace=True):
970+
if value is None or not replace:
970971
return default or {}
971972

972973
d = {}
@@ -979,7 +980,7 @@ def _getdict(self, value, default, sep):
979980

980981
def getbool(self, name, default=None, replace=True):
981982
s = self.getstring(name, default, replace=replace)
982-
if not s:
983+
if not s or not replace:
983984
s = default
984985
if s is None:
985986
raise KeyError("no config value [%s] %s found" % (

0 commit comments

Comments
 (0)