diff options
author | PJ Eby <distutils-sig@python.org> | 2005-07-06 01:54:08 +0000 |
---|---|---|
committer | PJ Eby <distutils-sig@python.org> | 2005-07-06 01:54:08 +0000 |
commit | 3686c4d8453202853aa670f2693c7594db179c64 (patch) | |
tree | 9fd99e202840041d8df2eec64e8bdae9542eb815 /setuptools/command/test.py | |
parent | 4a63bc6f16d3a4616edae1403f3c7bd67bdfa2f3 (diff) | |
download | external_python_setuptools-3686c4d8453202853aa670f2693c7594db179c64.tar.gz external_python_setuptools-3686c4d8453202853aa670f2693c7594db179c64.tar.bz2 external_python_setuptools-3686c4d8453202853aa670f2693c7594db179c64.zip |
Enhanced the ``test`` command so that it doesn't install the package, but
instead builds any C extensions in-place, updates the ``.egg-info``
metadata, adds the source directory to ``sys.path``, and runs the tests
directly on the source. This avoids an "unmanaged" installation of the
package to ``site-packages`` or elsewhere. (Also, fix a breaking test of
older dependency support; this should probably be removed altogether, as
long as nobody's using it.)
--HG--
branch : setuptools
extra : convert_revision : svn%3A6015fed2-1504-0410-9fe1-9d1591cc4771/sandbox/trunk/setuptools%4041078
Diffstat (limited to 'setuptools/command/test.py')
-rw-r--r-- | setuptools/command/test.py | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/setuptools/command/test.py b/setuptools/command/test.py index 6b37a9fd..37aeac68 100644 --- a/setuptools/command/test.py +++ b/setuptools/command/test.py @@ -1,4 +1,4 @@ -from distutils.cmd import Command +from setuptools import Command from distutils.errors import DistutilsOptionError import sys @@ -40,35 +40,35 @@ class test(Command): def run(self): + # Ensure metadata is up-to-date + self.run_command('egg_info') - # Install before testing - self.run_command('install') + # Build extensions in-place + self.reinitialize_command('build_ext', inplace=1) + self.run_command('build_ext') if self.test_suite: cmd = ' '.join(self.test_args) - if self.dry_run: self.announce('skipping "unittest %s" (dry run)' % cmd) else: self.announce('running "unittest %s"' % cmd) - import unittest - unittest.main(None, None, [unittest.__file__]+self.test_args) - - - - - - - - - - - - - - - - + self.run_tests() + + def run_tests(self): + import unittest, pkg_resources + old_path = sys.path[:] + ei_cmd = self.get_finalized_command("egg_info") + try: + # put the egg on sys.path, and require() it + sys.path.insert(0, ei_cmd.egg_base) + pkg_resources.require( + "%s==%s" % (ei_cmd.egg_name, ei_cmd.egg_version) + ) + unittest.main(None, None, [unittest.__file__]+self.test_args) + finally: + sys.path[:] = old_path + # XXX later this might need to save/restore the WorkingSet |