Skip to content

deps passed to pip are not de-factorized #706

@blueyed

Description

@blueyed

Given this tox.ini:

[testenv]
deps =
  foo
  coverage: coverage

[testenv:sub]
deps =
  {[testenv]deps}

Running tox -e sub results in:

sub create: /tmp/t1/.tox/sub
sub installdeps: foo, coverage: coverage
ERROR: invocation failed (exit code 1), logfile: /tmp/t1/.tox/sub/log/sub-1.log
ERROR: actionid: sub
msg: getenv
cmdargs: ['/tmp/t1/.tox/sub/bin/pip', 'install', 'foo', 'coverage: coverage']

Invalid requirement: 'coverage: coverage'
Traceback (most recent call last):
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/packaging/requirements.py", line 92, in __init__
    req = REQUIREMENT.parseString(requirement_string)
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1617, in parseString
    raise exc
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1607, in parseString
    loc, tokens = self._parse( instring, 0 )
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1379, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 3376, in parseImpl
    loc, exprtokens = e._parse( instring, loc, doActions )
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 1383, in _parseNoCache
    loc,tokens = self.parseImpl( instring, preloc, doActions )
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/pyparsing.py", line 3164, in parseImpl
    raise ParseException(instring, loc, self.errmsg, self)
pip._vendor.pyparsing.ParseException: Expected stringEnd (at char 8), (line:1, col:9)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/req/req_install.py", line 82, in __init__
    req = Requirement(req)
  File "/tmp/tox/tmp/t1/sub/lib/python3.6/site-packages/pip/_vendor/packaging/requirements.py", line 96, in __init__
    requirement_string[e.loc:e.loc + 8]))
pip._vendor.packaging.requirements.InvalidRequirement: Invalid requirement, parse error at "': covera'"


ERROR: could not install deps [foo, coverage: coverage]; v = InvocationError('/tmp/t1/.tox/sub/bin/pip install foo coverage: coverage (see /tmp/t1/.tox/sub/log/sub-1.log)', 1)
__________________________________________ summary __________________________________________
ERROR:   sub: could not install deps [foo, coverage: coverage]; v = InvocationError('/tmp/t1/.tox/sub/bin/pip install foo coverage: coverage (see /tmp/t1/.tox/sub/log/sub-1.log)', 1)

tox 2.9.2.dev35 (current master).

  1. it should only install 'coverage' and not 'coverage: coverage'
  2. it should only install it for when the "coverage" factor is used.

Metadata

Metadata

Assignees

Labels

bug:normalaffects many people or has quite an impact

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions