2013-03-27 06:26:52 +01:00
|
|
|
import os
|
|
|
|
import shutil
|
2013-05-01 01:02:10 +02:00
|
|
|
import tempfile
|
2013-03-27 06:26:52 +01:00
|
|
|
|
2013-05-01 01:02:10 +02:00
|
|
|
from mock import Mock
|
2013-03-27 06:26:52 +01:00
|
|
|
from pip.exceptions import PreviousBuildDirError
|
|
|
|
from pip.index import PackageFinder
|
2013-05-01 00:30:15 +02:00
|
|
|
from pip.log import logger
|
2013-03-27 06:26:52 +01:00
|
|
|
from pip.req import InstallRequirement, RequirementSet
|
2013-05-27 19:46:31 +02:00
|
|
|
from tests.lib import path_to_url, assert_raises_regexp, find_links
|
2013-03-27 06:26:52 +01:00
|
|
|
|
2013-05-01 01:02:10 +02:00
|
|
|
|
2013-03-27 06:26:52 +01:00
|
|
|
class TestRequirementSet(object):
|
|
|
|
"""RequirementSet tests"""
|
|
|
|
|
|
|
|
def setup(self):
|
2013-05-01 01:02:10 +02:00
|
|
|
logger.consumers = [(logger.NOTIFY, Mock())]
|
2013-03-27 06:26:52 +01:00
|
|
|
self.tempdir = tempfile.mkdtemp()
|
|
|
|
|
|
|
|
def teardown(self):
|
2013-05-01 00:30:15 +02:00
|
|
|
logger.consumers = []
|
2013-03-27 06:26:52 +01:00
|
|
|
shutil.rmtree(self.tempdir, ignore_errors=True)
|
|
|
|
|
2013-05-11 19:50:35 +02:00
|
|
|
def basic_reqset(self, skip_reqs={}):
|
2013-03-27 06:26:52 +01:00
|
|
|
return RequirementSet(
|
|
|
|
build_dir=os.path.join(self.tempdir, 'build'),
|
|
|
|
src_dir=os.path.join(self.tempdir, 'src'),
|
|
|
|
download_dir=None,
|
|
|
|
download_cache=os.path.join(self.tempdir, 'download_cache'),
|
2013-05-11 19:50:35 +02:00
|
|
|
skip_reqs=skip_reqs
|
2013-03-27 06:26:52 +01:00
|
|
|
)
|
|
|
|
|
|
|
|
def test_no_reuse_existing_build_dir(self):
|
|
|
|
"""Test prepare_files raise exception with previous build dir"""
|
|
|
|
|
|
|
|
build_dir = os.path.join(self.tempdir, 'build', 'simple')
|
|
|
|
os.makedirs(build_dir)
|
|
|
|
open(os.path.join(build_dir, "setup.py"), 'w')
|
|
|
|
reqset = self.basic_reqset()
|
|
|
|
req = InstallRequirement.from_line('simple')
|
|
|
|
reqset.add_requirement(req)
|
|
|
|
finder = PackageFinder([find_links], [])
|
|
|
|
assert_raises_regexp(
|
|
|
|
PreviousBuildDirError,
|
2013-05-01 00:30:15 +02:00
|
|
|
"pip can't proceed with [\s\S]*%s[\s\S]*%s" % (req, build_dir),
|
2013-03-27 06:26:52 +01:00
|
|
|
reqset.prepare_files,
|
|
|
|
finder
|
|
|
|
)
|
|
|
|
|
2013-05-11 19:50:35 +02:00
|
|
|
def test_skip_reqs(self):
|
|
|
|
"""Test the skip_reqs list works"""
|
|
|
|
|
|
|
|
reqset = self.basic_reqset(skip_reqs={'simple':''})
|
|
|
|
req = InstallRequirement.from_line('simple')
|
|
|
|
reqset.add_requirement(req)
|
|
|
|
assert not reqset.has_requirements
|
|
|
|
finder = PackageFinder([find_links], [])
|
|
|
|
reqset.prepare_files(finder)
|
|
|
|
assert not reqset.has_requirements
|
|
|
|
|
|
|
|
def test_add_requirement_returns_true_false(self):
|
|
|
|
"""Test add_requirement returns true of false"""
|
|
|
|
|
|
|
|
req = InstallRequirement.from_line('simple')
|
|
|
|
reqset = self.basic_reqset()
|
|
|
|
assert True == reqset.add_requirement(req)
|
|
|
|
reqset = self.basic_reqset(skip_reqs={'simple':''})
|
|
|
|
assert False == reqset.add_requirement(req)
|