summaryrefslogtreecommitdiffstats
path: root/testing/framework/TestUnit/cli.py
diff options
context:
space:
mode:
authoranatoly techtonik <techtonik@gmail.com>2014-03-20 14:19:22 (GMT)
committeranatoly techtonik <techtonik@gmail.com>2014-03-20 14:19:22 (GMT)
commitcaab0eacef8dccda042b01fb8cc6f48821bd0239 (patch)
tree49086e018288060a46f0c6d5ba4cee5e9a4ce547 /testing/framework/TestUnit/cli.py
parentdd17d6f1a71fe0787d0e781f3490e7f9a66a6b0d (diff)
downloadSCons-caab0eacef8dccda042b01fb8cc6f48821bd0239.zip
SCons-caab0eacef8dccda042b01fb8cc6f48821bd0239.tar.gz
SCons-caab0eacef8dccda042b01fb8cc6f48821bd0239.tar.bz2
Make runner for unit tests configurable, add TAPTestRunner that formats
output according to TAP protocol http://testanything.org/ runtest.py --runner TestUnit.TAPTestRunner src\engine\SCons\ActionTests.py
Diffstat (limited to 'testing/framework/TestUnit/cli.py')
-rw-r--r--testing/framework/TestUnit/cli.py35
1 files changed, 35 insertions, 0 deletions
diff --git a/testing/framework/TestUnit/cli.py b/testing/framework/TestUnit/cli.py
new file mode 100644
index 0000000..6aec735
--- /dev/null
+++ b/testing/framework/TestUnit/cli.py
@@ -0,0 +1,35 @@
+"""
+Choose test runner class from --runner command line option
+and execute test cases.
+"""
+
+import unittest
+import optparse
+import sys
+
+
+def get_runner():
+ parser = optparse.OptionParser()
+ parser.add_option('--runner', default='unittest.TextTestRunner',
+ help='name of test runner class to use')
+ opts, args = parser.parse_args()
+
+ fromsplit = opts.runner.rsplit('.', 1)
+ if len(fromsplit) < 2:
+ raise ValueError('Can\'t use module as a runner')
+ else:
+ runnermod = __import__(fromsplit[0])
+ return getattr(runnermod, fromsplit[1])
+
+
+def run(suite=None):
+ runner = get_runner()
+ if suite:
+ if not runner().run(suite).wasSuccessful():
+ sys.exit(1)
+ else:
+ unittest.main(argv=sys.argv[:1], testRunner=runner)
+
+
+if __name__ == '__main__':
+ run()