New issue 307: posargs can't be found except in very specific ways, is not
curently documented either
https://bitbucket.org/hpk42/tox/issues/307/posargs-cant-be-found-except-in-very
Mike Bayer:
possibly related to #150, i can't use {posargs} even in "commands=" if any
other substitution are present.
Using tox 2.3.1, and the commandline here is just to try to list the
environments:
$ tox -c some_tox.ini -l
For all examples, failure looks like:
```
#!
Traceback (most recent call last):
File "/home/classic/.venv/bin/tox", line 11, in <module>
sys.exit(cmdline())
File "/home/classic/.venv/lib/python2.7/site-packages/tox/session.py", line
38, in main
config = prepare(args)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/session.py", line
26, in prepare
config = parseconfig(args)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
229, in parseconfig
parseini(config, inipath)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
729, in __init__
self.make_envconfig(name, section, reader._subs, config)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
760, in make_envconfig
res = meth(env_attr.name, env_attr.default)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
929, in getargvlist
return _ArgvlistReader.getargvlist(self, s)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1097, in getargvlist
replaced = reader._replace(current_command)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
973, in _replace
return Replacer(self, crossonly=crossonly).do_replace(value)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
992, in do_replace
return self.RE_ITEM_REF.sub(self._replace_match, x)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1021, in _replace_match
return self._replace_substitution(match)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1067, in _replace_substitution
val = self._substitute_from_other_section(sub_key)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1058, in _substitute_from_other_section
crossonly=self.crossonly)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
973, in _replace
return Replacer(self, crossonly=crossonly).do_replace(value)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
992, in do_replace
return self.RE_ITEM_REF.sub(self._replace_match, x)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1021, in _replace_match
return self._replace_substitution(match)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1067, in _replace_substitution
val = self._substitute_from_other_section(sub_key)
File "/home/classic/.venv/lib/python2.7/site-packages/tox/config.py", line
1061, in _substitute_from_other_section
"substitution key %r not found" % key)
tox.ConfigError: ConfigError: substitution key 'posargs' not found
```
Example 1, fails:
```
#!
[tox]
envlist =
py{26,27,34,35}-sqla_{cext,nocext}-db_{default,sqlitepg,mysql,oracle,mssql}
[testenv]
basecommand=
python -m pytest -n4 --dropfirst {posargs}
commands=
db_{mysql}: {[testenv]basecommand} --db mysql --db pymysql
```
Example 2, fails:
```
#!
[tox]
envlist =
py{26,27,34,35}-sqla_{cext,nocext}-db_{default,sqlitepg,mysql,oracle,mssql}
[testenv]
basecommand=
python -m pytest -n4 --dropfirst
commands=
db_{mysql}: {[testenv]basecommand} --db mysql --db pymysql {posargs}
```
Example 3, passes:
```
#!
[tox]
envlist =
py{26,27,34,35}-sqla_{cext,nocext}-db_{default,sqlitepg,mysql,oracle,mssql}
[testenv]
commands=
db_{mysql}: python -m pytest -n4 --dropfirst --db mysql --db pymysql {posargs}
```
it would be nice if {posargs} just worked everywhere.
Also, current documentation at
https://tox.readthedocs.org/en/latest/config.html does not describe the
{posargs} token by itself, there's just the docs about {posargs:DEFAULT} which
seems to be something else.
_______________________________________________
pytest-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pytest-commit