From a947c29903d9cac8fcee74e5c2c679306ba26eae Mon Sep 17 00:00:00 2001 From: Xavier Fernandez Date: Tue, 7 Apr 2015 22:37:38 +0200 Subject: [PATCH] Always check environment markers Fixes #2658 --- pip/req/req_set.py | 3 +-- tests/unit/test_req.py | 13 +++++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/pip/req/req_set.py b/pip/req/req_set.py index 2c8063a8c..a3526e001 100644 --- a/pip/req/req_set.py +++ b/pip/req/req_set.py @@ -200,8 +200,7 @@ class RequirementSet(object): requirement is applicable and has just been added. """ name = install_req.name - if ((not name or not self.has_requirement(name)) and not - install_req.match_markers()): + if not install_req.match_markers(): # Only log if we haven't already got install_req from somewhere. logger.debug("Ignore %s: markers %r don't match", install_req.name, install_req.markers) diff --git a/tests/unit/test_req.py b/tests/unit/test_req.py index 55299cd2f..427948d6d 100644 --- a/tests/unit/test_req.py +++ b/tests/unit/test_req.py @@ -405,3 +405,16 @@ def test_filter_install(): INFO, 'foo bar') assert _filter_install('I made a SyntaxError') == ( INFO, 'I made a SyntaxError') + + +def test_exclusive_environment_markers(): + """Make sure RequirementSet accepts several excluding env markers""" + eq26 = InstallRequirement.from_line( + "Django>=1.6.10,<1.7 ; python_version == '2.6'") + ne26 = InstallRequirement.from_line( + "Django>=1.6.10,<1.8 ; python_version != '2.6'") + + req_set = RequirementSet('', '', '', session=PipSession()) + req_set.add_requirement(eq26) + req_set.add_requirement(ne26) + assert req_set.has_requirement('Django')