[Pytest-commit] commit/tox: 4 new changesets
commits-noreply at bitbucket.org
commits-noreply at bitbucket.org
Mon Mar 9 08:10:48 CET 2015
4 new commits in tox:
https://bitbucket.org/hpk42/tox/commits/aca6e943ba18/
Changeset: aca6e943ba18
Branch: fix-force-dep-with-reqs-file
User: djeebus
Date: 2014-11-03 22:50:29+00:00
Summary: Fix issues with external requirements files and force dep
Using --force-dep while your [testenv] included a dep similar to "-r{toxinidir}/reqs.txt" would cause an unhandled exception similar to: ValueError: ('Expected version spec in', '-rrequirements-test.txt', 'at', 'requirements-test.txt')
Affected #: 2 files
diff -r 9d8f0d5319e77951c0542ece53c960dc3b2886e7 -r aca6e943ba184799252b50b31aa08928fb092c0b tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1384,6 +1384,59 @@
r'*deps=*dep1, dep2==5.0*',
])
+ def test_force_dep_with_requirements_txt_file(self, cmd, initproj):
+ """
+ Make sure we can override dependencies configured in external reqs.txt
+ when using the command line option --force-dep.
+ """
+ initproj("example123-0.5", filedefs={
+ 'tox.ini': '''
+ [tox]
+
+ [testenv]
+ deps=
+ dep1==1.0
+ -r{toxinidir}/reqs.txt
+ ''',
+ 'reqs.txt': '''
+ -e git://hello/world/git
+ dep2>=2.0
+ -i http://index.local/
+ dep3
+ dep4==4.0
+ -r reqs2.txt
+ ''',
+ 'reqs2.txt': '''
+ dep5>=2.2
+ '''
+ })
+ config = parseconfig(
+ ['--force-dep=dep1==1.5', '--force-dep=dep2==2.1',
+ '--force-dep=dep3==3.0'])
+ assert config.option.force_dep == [
+ 'dep1==1.5', 'dep2==2.1', 'dep3==3.0']
+
+ deps = config.envconfigs['python'].deps
+ assert len(deps) == 2
+ assert deps[0].name == 'dep1==1.5'
+ include_file = deps[1].name
+ assert include_file.startswith('-r')
+ with open(include_file[2:]) as reqs:
+ lines = [x.strip() for x in reqs.readlines()]
+ assert len(lines) == 6
+ second_file = lines.pop(len(lines) - 1)
+ assert second_file.startswith('-r')
+ assert lines == [
+ '-e git://hello/world/git',
+ 'dep2==2.1',
+ '-i http://index.local/',
+ 'dep3==3.0',
+ 'dep4==4.0',
+ ]
+ with open(second_file[2:]) as reqs2:
+ lines = [x.strip() for x in reqs2.readlines()]
+ assert lines == ['dep5>=2.2']
+
class TestArgumentParser:
def test_dash_e_single_1(self):
diff -r 9d8f0d5319e77951c0542ece53c960dc3b2886e7 -r aca6e943ba184799252b50b31aa08928fb092c0b tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -1,4 +1,5 @@
import argparse
+import tempfile
import os
import random
import sys
@@ -363,6 +364,7 @@
vc.whitelist_externals = reader.getlist(section,
"whitelist_externals")
vc.deps = []
+ reqs_files = []
for depline in reader.getlist(section, "deps"):
m = re.match(r":(\w+):\s*(\S+)", depline)
if m:
@@ -371,8 +373,41 @@
else:
name = depline.strip()
ixserver = None
- name = self._replace_forced_dep(name, config)
- vc.deps.append(DepConfig(name, ixserver))
+
+ if name[:2] == '-r': # not a dependency, but a file full of dependencies
+ fd, temp_path = tempfile.mkstemp()
+ reqs_files.append((name[2:].strip(), fd, temp_path))
+ vc.deps.append(DepConfig('-r%s' % temp_path))
+ elif name[0] == '-': # an option to be sent to pip
+ vc.deps.append(DepConfig(name, ixserver))
+ else:
+ name = self._replace_forced_dep(name, config)
+ vc.deps.append(DepConfig(name, ixserver))
+
+ for reqs_file, fd, temp_path in reqs_files:
+ lines = []
+ with open(reqs_file, 'r') as reqs:
+ for req in reqs.readlines():
+ req = req.strip()
+ if not req:
+ continue
+
+ if req.startswith('-'):
+ if req.startswith('-r'):
+ new_fd, new_temp_path = tempfile.mkstemp()
+ reqs_files.append((req[2:].strip(), new_fd, new_temp_path))
+ lines.append('-r' + new_temp_path)
+ else:
+ lines.append(req)
+ continue
+
+ name = self._replace_forced_dep(req, config)
+ lines.append(name)
+
+ with open(temp_path, mode='w') as temp_reqs:
+ temp_reqs.writelines(os.linesep.join(lines))
+ os.close(fd)
+
vc.distribute = reader.getbool(section, "distribute", False)
vc.sitepackages = self.config.option.sitepackages or \
reader.getbool(section, "sitepackages", False)
https://bitbucket.org/hpk42/tox/commits/80bb02e004fc/
Changeset: 80bb02e004fc
Branch: fix-force-dep-with-reqs-file
User: djeebus
Date: 2014-11-04 00:51:30+00:00
Summary: Ignore comments
Affected #: 2 files
diff -r aca6e943ba184799252b50b31aa08928fb092c0b -r 80bb02e004fc52c57997977b5ae1f2255707f497 tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1400,7 +1400,10 @@
''',
'reqs.txt': '''
-e git://hello/world/git
- dep2>=2.0
+ # comment
+ dep2>=2.0 # comment
+
+
-i http://index.local/
dep3
dep4==4.0
diff -r aca6e943ba184799252b50b31aa08928fb092c0b -r 80bb02e004fc52c57997977b5ae1f2255707f497 tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -400,6 +400,8 @@
else:
lines.append(req)
continue
+ elif req.startswith('#'):
+ continue
name = self._replace_forced_dep(req, config)
lines.append(name)
https://bitbucket.org/hpk42/tox/commits/4f704801ff0a/
Changeset: 4f704801ff0a
Branch: fix-force-dep-with-reqs-file-with-pip
User: sontek
Date: 2015-03-06 00:42:07+00:00
Summary: Support force dependencies with requirements.txt using pip
Affected #: 2 files
diff -r 80bb02e004fc52c57997977b5ae1f2255707f497 -r 4f704801ff0a8b08ee7addce1cc0ca42c61877cb tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1399,7 +1399,7 @@
-r{toxinidir}/reqs.txt
''',
'reqs.txt': '''
- -e git://hello/world/git
+ -e git://hello/world/git#egg=Hello
# comment
dep2>=2.0 # comment
@@ -1420,25 +1420,13 @@
'dep1==1.5', 'dep2==2.1', 'dep3==3.0']
deps = config.envconfigs['python'].deps
- assert len(deps) == 2
- assert deps[0].name == 'dep1==1.5'
- include_file = deps[1].name
- assert include_file.startswith('-r')
- with open(include_file[2:]) as reqs:
- lines = [x.strip() for x in reqs.readlines()]
- assert len(lines) == 6
- second_file = lines.pop(len(lines) - 1)
- assert second_file.startswith('-r')
- assert lines == [
- '-e git://hello/world/git',
- 'dep2==2.1',
- '-i http://index.local/',
- 'dep3==3.0',
- 'dep4==4.0',
- ]
- with open(second_file[2:]) as reqs2:
- lines = [x.strip() for x in reqs2.readlines()]
- assert lines == ['dep5>=2.2']
+ assert len(deps) == 6
+ expected = ['dep1==1.5', 'Hello', 'dep2==2.1',
+ 'dep3==3.0', 'dep4', 'dep5']
+
+ for index, dep in enumerate(deps):
+ assert dep.name == expected[index]
+
class TestArgumentParser:
diff -r 80bb02e004fc52c57997977b5ae1f2255707f497 -r 4f704801ff0a8b08ee7addce1cc0ca42c61877cb tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -1,5 +1,4 @@
import argparse
-import tempfile
import os
import random
import sys
@@ -10,7 +9,8 @@
import itertools
from tox.interpreters import Interpreters
-
+from pip.req.req_file import parse_requirements
+from pip.download import PipSession
import py
import tox
@@ -364,7 +364,8 @@
vc.whitelist_externals = reader.getlist(section,
"whitelist_externals")
vc.deps = []
- reqs_files = []
+ requirement_files = []
+
for depline in reader.getlist(section, "deps"):
m = re.match(r":(\w+):\s*(\S+)", depline)
if m:
@@ -374,41 +375,27 @@
name = depline.strip()
ixserver = None
- if name[:2] == '-r': # not a dependency, but a file full of dependencies
- fd, temp_path = tempfile.mkstemp()
- reqs_files.append((name[2:].strip(), fd, temp_path))
- vc.deps.append(DepConfig('-r%s' % temp_path))
- elif name[0] == '-': # an option to be sent to pip
- 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))
- for reqs_file, fd, temp_path in reqs_files:
- lines = []
- with open(reqs_file, 'r') as reqs:
- for req in reqs.readlines():
- req = req.strip()
- if not req:
- continue
+ pip_session = PipSession()
- if req.startswith('-'):
- if req.startswith('-r'):
- new_fd, new_temp_path = tempfile.mkstemp()
- reqs_files.append((req[2:].strip(), new_fd, new_temp_path))
- lines.append('-r' + new_temp_path)
- else:
- lines.append(req)
- continue
- elif req.startswith('#'):
- continue
+ for requirement_file in requirement_files:
+ req_deps = parse_requirements(
+ requirement_file,
+ session=pip_session
+ )
- name = self._replace_forced_dep(req, config)
- lines.append(name)
-
- with open(temp_path, mode='w') as temp_reqs:
- temp_reqs.writelines(os.linesep.join(lines))
- os.close(fd)
+ 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 \
https://bitbucket.org/hpk42/tox/commits/1c6afe4646fc/
Changeset: 1c6afe4646fc
User: hpk42
Date: 2015-03-09 07:10:45+00:00
Summary: Merged in sontek/tox/fix-force-dep-with-reqs-file-with-pip (pull request #136)
Support force dependencies with requirements.txt using pip
Affected #: 2 files
diff -r 69f9be62ef38ef3dca9a932d79f2df85c834258a -r 1c6afe4646fcd4ccc8a6e4c20cc8bc19d6a4549b tests/test_config.py
--- a/tests/test_config.py
+++ b/tests/test_config.py
@@ -1423,6 +1423,50 @@
r'*deps=*dep1, dep2==5.0*',
])
+ def test_force_dep_with_requirements_txt_file(self, cmd, initproj):
+ """
+ Make sure we can override dependencies configured in external reqs.txt
+ when using the command line option --force-dep.
+ """
+ initproj("example123-0.5", filedefs={
+ 'tox.ini': '''
+ [tox]
+
+ [testenv]
+ deps=
+ dep1==1.0
+ -r{toxinidir}/reqs.txt
+ ''',
+ 'reqs.txt': '''
+ -e git://hello/world/git#egg=Hello
+ # comment
+ dep2>=2.0 # comment
+
+
+ -i http://index.local/
+ dep3
+ dep4==4.0
+ -r reqs2.txt
+ ''',
+ 'reqs2.txt': '''
+ dep5>=2.2
+ '''
+ })
+ config = parseconfig(
+ ['--force-dep=dep1==1.5', '--force-dep=dep2==2.1',
+ '--force-dep=dep3==3.0'])
+ assert config.option.force_dep == [
+ 'dep1==1.5', 'dep2==2.1', 'dep3==3.0']
+
+ deps = config.envconfigs['python'].deps
+ assert len(deps) == 6
+ expected = ['dep1==1.5', 'Hello', 'dep2==2.1',
+ 'dep3==3.0', 'dep4', 'dep5']
+
+ for index, dep in enumerate(deps):
+ assert dep.name == expected[index]
+
+
class TestArgumentParser:
def test_dash_e_single_1(self):
diff -r 69f9be62ef38ef3dca9a932d79f2df85c834258a -r 1c6afe4646fcd4ccc8a6e4c20cc8bc19d6a4549b tox/_config.py
--- a/tox/_config.py
+++ b/tox/_config.py
@@ -9,7 +9,8 @@
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 @@
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 @@
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)
Repository URL: https://bitbucket.org/hpk42/tox/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the pytest-commit
mailing list