Patchwork [2,of,2] tests: add a test runner utility that prints nothing when all tests pass

login
register
mail settings
Submitter Idan Kamara
Date Feb. 9, 2013, 5:17 p.m.
Message ID <15828f7e5de2c59201fb.1360430221@idan>
Download mbox | patch
Permalink /patch/899/
State Accepted
Commit 2cbfb8c497eeeb376e22a7f76db54fb55f931b0a
Headers show

Comments

Idan Kamara - Feb. 9, 2013, 5:17 p.m.
# HG changeset patch
# User Idan Kamara <idankk86@gmail.com>
# Date 1360430019 -7200
# Node ID 15828f7e5de2c59201fbe8a996a7d71a6bb07926
# Parent  26627c30735a610f59979a36885b327b25d8dbff
tests: add a test runner utility that prints nothing when all tests pass

This will be used to run tests through run-tests, which will expect no output
for a unit test that passes successfully.

The motivation for using unit tests instead of the current Python tests is that
they don't require an output file for comparison and that they're easier to write
because of the available tools from unittest (setup, asserts).

Patch

diff --git a/tests/silenttestrunner.py b/tests/silenttestrunner.py
new file mode 100644
--- /dev/null
+++ b/tests/silenttestrunner.py
@@ -0,0 +1,18 @@ 
+import unittest, sys
+
+def main(modulename):
+    '''run the tests found in module, printing nothing when all tests pass'''
+    module = sys.modules[modulename]
+    suite = unittest.defaultTestLoader.loadTestsFromModule(module)
+    results = unittest.TestResult()
+    suite.run(results)
+    if results.errors or results.failures:
+        for tc, exc in results.errors:
+            print 'ERROR:', tc
+            print
+            sys.stdout.write(exc)
+        for tc, exc in results.failures:
+            print 'FAIL:', tc
+            print
+            sys.stdout.write(exc)
+        sys.exit(1)