[Python-checkins] distutils2: test loader with dotted syntax now working
tarek.ziade
python-checkins at python.org
Sun Sep 19 10:20:21 CEST 2010
tarek.ziade pushed 10530a984ad7 to distutils2:
http://hg.python.org/distutils2/rev/10530a984ad7
changeset: 602:10530a984ad7
user: Konrad Delong <konryd at gmail.com>
date: Tue Jul 27 14:56:41 2010 +0200
summary: test loader with dotted syntax now working
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/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
@@ -2,16 +2,39 @@
from distutils2.core import Command
import unittest
+def get_loader_instance(dotted_path):
+ if dotted_path is None:
+ return None
+ module_name, rest = dotted_path.split('.')[0], dotted_path.split('.')[1:]
+ while True:
+ try:
+ ret = __import__(module_name)
+ break
+ except ImportError:
+ if rest == []:
+ return None
+ module_name += ('.' + rest[0])
+ rest = rest[1:]
+ while rest:
+ try:
+ ret = getattr(ret, rest.pop(0))
+ except AttributeError:
+ return None
+ return ret()
+
class test(Command):
description = "" # TODO
user_options = [
- ('test-suite=','s',
+ ('test-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."),
]
def initialize_options(self):
- self.test_suite = None
+ self.test_suite = None
+ self.test_loader = None
def finalize_options(self):
self.build_lib = self.get_finalized_command("build").build_lib
@@ -21,9 +44,15 @@
try:
if self.distribution.has_ext_modules():
build = self.get_reinitialized_command('build')
- build.inplace = 1
+ build.inplace = 1 # TODO - remove make sure it's needed
self.run_command('build')
os.chdir(self.build_lib)
- unittest.main(module=self.test_suite, argv=sys.argv[:1])
+ args = {"module": self.test_suite,
+ "argv": sys.argv[:1],
+ "testLoader": get_loader_instance(self.test_loader)
+ }
+ if args['testLoader'] is None:
+ del args['testLoader']
+ unittest.main(**args)
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
new file mode 100644
--- /dev/null
+++ b/src/distutils2/tests/dists/custom_loader/myowntestmodule.py
@@ -0,0 +1,9 @@
+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
new file mode 100644
--- /dev/null
+++ b/src/distutils2/tests/dists/custom_loader/setup.cfg
@@ -0,0 +1,2 @@
+[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
new file mode 100644
--- /dev/null
+++ b/src/distutils2/tests/dists/custom_loader/setup.py
@@ -0,0 +1,5 @@
+from distutils2.core import setup
+setup(name='somedist',
+ version='0.1',
+ py_modules=['myowntestmodule', 'somemod'],
+)
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
@@ -75,7 +75,9 @@
self.assertTrue(any(x.startswith('lib') for x in os.listdir(join(self.pkg_dir, 'build'))))
def test_custom_test_loader(self):
- pass
+ 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
--
Repository URL: http://hg.python.org/distutils2
More information about the Python-checkins
mailing list