summaryrefslogtreecommitdiff
path: root/tox
diff options
context:
space:
mode:
authorholger krekel <holger@merlinux.eu>2015-03-09 08:10:45 +0100
committerholger krekel <holger@merlinux.eu>2015-03-09 08:10:45 +0100
commita85561dd62c86929b60c011ec64187484a1120e4 (patch)
treeae1fa56d4caf5294b832cbb16d60a912af53f89a /tox
parent3fd43ad85ec200a199bf83f30c66499aacb0d4ac (diff)
parent0765d8d77af6e5bbe16e79d4aff947c8dcd46e91 (diff)
downloadtox-a85561dd62c86929b60c011ec64187484a1120e4.tar.gz
Merged in sontek/tox/fix-force-dep-with-reqs-file-with-pip (pull request #136)
Support force dependencies with requirements.txt using pip
Diffstat (limited to 'tox')
-rw-r--r--tox/_config.py30
1 files changed, 27 insertions, 3 deletions
diff --git a/tox/_config.py b/tox/_config.py
index 3d26686..b7afc62 100644
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -9,7 +9,8 @@ import pkg_resources
import itertools
from tox.interpreters import Interpreters
-
+from pip.req.req_file import parse_requirements
+from pip.download import PipSession
import py
import tox
@@ -371,6 +372,8 @@ class parseini:
vc.whitelist_externals = reader.getlist(section,
"whitelist_externals")
vc.deps = []
+ requirement_files = []
+
for depline in reader.getlist(section, "deps"):
m = re.match(r":(\w+):\s*(\S+)", depline)
if m:
@@ -379,8 +382,29 @@ class parseini:
else:
name = depline.strip()
ixserver = None
- name = self._replace_forced_dep(name, config)
- vc.deps.append(DepConfig(name, ixserver))
+
+
+ # We want to parse requirements.txt files last so that
+ # we can process them with forced dependencies
+ if name[:2] == '-r':
+ fname = name[2:].strip()
+ requirement_files.append(fname)
+ else:
+ name = self._replace_forced_dep(name, config)
+ vc.deps.append(DepConfig(name, ixserver))
+
+ pip_session = PipSession()
+
+ for requirement_file in requirement_files:
+ req_deps = parse_requirements(
+ requirement_file,
+ session=pip_session
+ )
+
+ for r in req_deps:
+ name = self._replace_forced_dep(r.name, config)
+ vc.deps.append(DepConfig(name, ixserver))
+
vc.distribute = reader.getbool(section, "distribute", False)
vc.sitepackages = self.config.option.sitepackages or \
reader.getbool(section, "sitepackages", False)