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