From 1a036be620fd4e44d769b4cd88060a767b8e6385 Mon Sep 17 00:00:00 2001 From: Paul McLanahan <pmac@mozilla.com> Date: Tue, 28 Oct 2014 13:33:13 -0400 Subject: [PATCH] Fix #6: Only import unittest during test run. Raise exception if unittest2 not installed for Python < 2.7. Doing this instead of adding requirement as many (most) installs won't need to run the tests. --- setup.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index 1f633d4..413994a 100755 --- a/setup.py +++ b/setup.py @@ -25,10 +25,7 @@ from distutils import log from distutils.command.install import install from distutils.core import setup from distutils.core import Command -if sys.version_info < (2, 7): - import unittest2 as unittest -else: - import unittest + BASE_DIR = os.path.dirname(globals().get('__file__', os.getcwd())) @@ -44,6 +41,14 @@ class TestCmd(Command): pass def run(self): + if sys.version_info < (2, 7): + try: + import unittest2 as unittest + except ImportError: + raise RuntimeError('unittest2 required for running tests under Python < 2.7.') + else: + import unittest + test_dir = os.path.join(BASE_DIR, 'tests') tests = unittest.TestLoader().discover(test_dir) @@ -52,6 +57,7 @@ class TestCmd(Command): if not result.wasSuccessful(): sys.exit(1) + class CleanCmd(Command): description = 'Remove all generated files.' user_options = [] @@ -153,6 +159,7 @@ class InstallCmd(install): os.path.join(manpage_dir, manpage_file), dry_run=self.dry_run) + # Only override install if not being run by setuptools. cmdclass = {'test': TestCmd, 'dist_clean': CleanCmd, @@ -160,6 +167,7 @@ cmdclass = {'test': TestCmd, if 'setuptools' not in dir(): cmdclass['install'] = InstallCmd + setup( cmdclass=cmdclass, name='chkcrontab', -- GitLab