From 69a6935ac9ed307a5fa3ed6464d3a028495d1ad2 Mon Sep 17 00:00:00 2001 From: "phillip.eby" Date: Sat, 24 Feb 2007 22:09:20 +0000 Subject: Fix "test" command possibly failing if an older version of the project being tested is installed on sys.path ahead of the test source directory. git-svn-id: http://svn.python.org/projects/sandbox/trunk/setuptools@53895 6015fed2-1504-0410-9fe1-9d1591cc4771 --- setuptools/command/test.py | 67 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 56 insertions(+), 11 deletions(-) (limited to 'setuptools/command') diff --git a/setuptools/command/test.py b/setuptools/command/test.py index 01fca35..fe024c6 100644 --- a/setuptools/command/test.py +++ b/setuptools/command/test.py @@ -80,7 +80,7 @@ class test(Command): - def run(self): + def with_project_on_sys_path(self, func): # Ensure metadata is up-to-date self.run_command('egg_info') @@ -88,6 +88,24 @@ class test(Command): self.reinitialize_command('build_ext', inplace=1) self.run_command('build_ext') + ei_cmd = self.get_finalized_command("egg_info") + + old_path = sys.path[:] + old_modules = sys.modules.copy() + + try: + sys.path.insert(0, normalize_path(ei_cmd.egg_base)) + working_set.__init__() + require('%s==%s' % (ei_cmd.egg_name, ei_cmd.egg_version)) + func() + finally: + sys.path[:] = old_path + sys.modules.clear() + sys.modules.update(old_modules) + working_set.__init__() + + + def run(self): if self.distribution.tests_require: self.distribution.fetch_build_eggs(self.distribution.tests_require) @@ -97,23 +115,50 @@ class test(Command): self.announce('skipping "unittest %s" (dry run)' % cmd) else: self.announce('running "unittest %s"' % cmd) - self.run_tests() + self.with_project_on_sys_path(self.run_tests) + + + def run_tests(self): import unittest - old_path = sys.path[:] - ei_cmd = self.get_finalized_command("egg_info") - path_item = normalize_path(ei_cmd.egg_base) - metadata = PathMetadata( - path_item, normalize_path(ei_cmd.egg_info) - ) - dist = Distribution(path_item, metadata, project_name=ei_cmd.egg_name) - working_set.add(dist) - require(str(dist.as_requirement())) loader_ep = EntryPoint.parse("x="+self.test_loader) loader_class = loader_ep.load(require=False) unittest.main( None, None, [unittest.__file__]+self.test_args, testLoader = loader_class() ) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + -- cgit v1.2.1