[Python-checkins] distutils2: dropped test_loader and added test_runner, renamed test_suite

tarek.ziade python-checkins at python.org
Sun Sep 19 10:20:22 CEST 2010


tarek.ziade pushed b81715424b1c to distutils2:

http://hg.python.org/distutils2/rev/b81715424b1c
changeset:   620:b81715424b1c
user:        Konrad Delong <konryd at gmail.com>
date:        Fri Aug 13 17:31:20 2010 +0200
summary:     dropped test_loader and added test_runner, renamed test_suite
files:       src/distutils2/command/test.py, src/distutils2/tests/dists/custom_loader/myowntestmodule.py, src/distutils2/tests/dists/custom_loader/setup.cfg, src/distutils2/tests/dists/custom_loader/setup.py, src/distutils2/tests/dists/extensions_test/setup.cfg, src/distutils2/tests/dists/simple_test/setup.cfg, src/distutils2/tests/test_test.py

diff --git a/src/distutils2/command/test.py b/src/distutils2/command/test.py
--- a/src/distutils2/command/test.py
+++ b/src/distutils2/command/test.py
@@ -1,4 +1,5 @@
 import os, sys
+from distutils2 import log
 from distutils2.core import Command 
 from distutils2._backport.pkgutil import get_distribution
 from distutils2.util import resolve_name
@@ -8,16 +9,17 @@
 class test(Command):
 
     description = "run the distribution's test suite"
+
     user_options = [
-        ('test-suite=', 's',
+        ('suite=', 's',
             "Test suite to run (e.g. 'some_module.test_suite')"),
-        ('test-loader=', None,
-            "Test loader to be used to load the test suite."),
+        ('runner=', None,
+            "Test runner to be called."),
     ]
     
     def initialize_options(self):
-        self.test_suite = None
-        self.test_loader = None
+        self.suite = None
+        self.runner = None
     
     def finalize_options(self):
         self.build_lib = self.get_finalized_command("build").build_lib
@@ -26,23 +28,23 @@
                 if get_distribution(requirement) is None:
                     warnings.warn("The test dependency %s is not installed which may couse the tests to fail." % requirement,
                                   RuntimeWarning)
+        if not self.suite and not self.runner:
+            self.announce("Either 'suite' or 'runner' option must be specified", log.ERROR)
 
     def run(self):
         prev_cwd = os.getcwd()
         try:
+            # build distribution if needed
             if self.distribution.has_ext_modules():
                 build = self.get_reinitialized_command('build')
-                build.inplace = 1 # TODO - remove make sure it's needed
+                build.inplace = 1
                 self.run_command('build')
                 os.chdir(self.build_lib)
-            args = {}
-            if self.test_loader:
-                loader_class = resolve_name(self.test_loader)
-                args['testLoader'] = loader_class()
-            if self.test_suite:
-                argv = [unittest.__file__, '--verbose', self.test_suite]
-            else:
-                argv = [unittest.__file__, '--verbose']
-            unittest.main(None, None, argv, **args)
+
+            # run the tests
+            if self.runner:
+                resolve_name(self.runner)()
+            elif self.suite:
+                unittest.main(None, None, [unittest.__file__, '--verbose', self.suite])
         finally:
             os.chdir(prev_cwd)
diff --git a/src/distutils2/tests/dists/custom_loader/myowntestmodule.py b/src/distutils2/tests/dists/custom_loader/myowntestmodule.py
deleted file mode 100644
--- a/src/distutils2/tests/dists/custom_loader/myowntestmodule.py
+++ /dev/null
@@ -1,9 +0,0 @@
-import unittest
-class Loader(object):
-    def loadTestsFromModule(self, names, module=None):
-        class SomeTest(unittest.TestCase):
-            def test_blah(self):
-                self.fail("horribly")
-        return unittest.makeSuite(SomeTest)
-    def __repr__(self):
-        return 'YO'
diff --git a/src/distutils2/tests/dists/custom_loader/setup.cfg b/src/distutils2/tests/dists/custom_loader/setup.cfg
deleted file mode 100644
--- a/src/distutils2/tests/dists/custom_loader/setup.cfg
+++ /dev/null
@@ -1,2 +0,0 @@
-[test]
-test-loader = myowntestmodule.Loader
diff --git a/src/distutils2/tests/dists/custom_loader/setup.py b/src/distutils2/tests/dists/custom_loader/setup.py
deleted file mode 100644
--- a/src/distutils2/tests/dists/custom_loader/setup.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from distutils2.core import setup
-setup(name='somedist',
-      version='0.1',
-      py_modules=['myowntestmodule', 'somemod'],
-)
diff --git a/src/distutils2/tests/dists/extensions_test/setup.cfg b/src/distutils2/tests/dists/extensions_test/setup.cfg
--- a/src/distutils2/tests/dists/extensions_test/setup.cfg
+++ b/src/distutils2/tests/dists/extensions_test/setup.cfg
@@ -1,2 +1,2 @@
 [test]
-test-suite = myowntestmodule.test_suite
+suite = myowntestmodule.test_suite
diff --git a/src/distutils2/tests/dists/simple_test/setup.cfg b/src/distutils2/tests/dists/simple_test/setup.cfg
--- a/src/distutils2/tests/dists/simple_test/setup.cfg
+++ b/src/distutils2/tests/dists/simple_test/setup.cfg
@@ -1,2 +1,2 @@
 [test]
-test-suite = myowntestmodule.test_suite
+suite = myowntestmodule.test_suite
diff --git a/src/distutils2/tests/test_test.py b/src/distutils2/tests/test_test.py
--- a/src/distutils2/tests/test_test.py
+++ b/src/distutils2/tests/test_test.py
@@ -7,7 +7,7 @@
 from copy import copy
 from os.path import join
 from StringIO import StringIO
-from distutils2.tests.support import unittest, TempdirManager
+from distutils2.tests.support import unittest, LoggingSilencer, TempdirManager
 from distutils2.command.test import test
 from distutils2.dist import Distribution
 
@@ -27,7 +27,9 @@
 here = os.path.dirname(os.path.abspath(__file__))
 
 
-class TestTest(TempdirManager, unittest.TestCase):
+class TestTest(TempdirManager,
+               #LoggingSilencer,
+               unittest.TestCase):
 
     def setUp(self):
         super(TestTest, self).setUp()
@@ -80,11 +82,6 @@
         self.assertTrue(os.path.exists(join(self.pkg_dir, 'build')))
         self.assertTrue(any(x.startswith('lib') for x in os.listdir(join(self.pkg_dir, 'build'))))
 
-    def test_custom_test_loader(self):
-        self.pkg_dir = self.prepare_dist("custom_loader")
-        output = self.run_with_dist_cwd(self.pkg_dir)
-        self.assert_re_match(EXPECTED_OUTPUT_RE, output)
-
     def _test_works_with_2to3(self):
         pass
 
@@ -102,6 +99,25 @@
 
         examine_warnings(examinator)
 
+    def test_custom_runner(self):
+        dist = Distribution()
+        cmd = test(dist)
+
+        tmp_dir = self.mkdtemp()
+        try:
+            sys.path.append(tmp_dir)
+            self.write_file(os.path.join(tmp_dir, 'distutils2_tests_a.py'), '')
+            import distutils2_tests_a as a_module
+            a_module.recorder = lambda: record.append("runner called")
+            record = []
+            cmd.runner = "distutils2_tests_a.recorder"
+            cmd.ensure_finalized()
+            cmd.run()
+            self.assertEqual(["runner called"], record)
+        finally:
+            sys.path.remove(tmp_dir)
+        
+
 def test_suite():
     return unittest.makeSuite(TestTest)
 

--
Repository URL: http://hg.python.org/distutils2


More information about the Python-checkins mailing list