]> gitweb.michael.orlitzky.com - dunshire.git/blobdiff - test/__main__.py
Print a "pass" count during testing loops.
[dunshire.git] / test / __main__.py
index b0598e7dbbff4fa082039b4c41bff1604e8c2506..d03b7a6968504f2b941cb4dd223a13676565e32b 100755 (executable)
@@ -2,9 +2,36 @@
 """
 An implementation of __main__() that allows us to "run this module."
 """
+from sys import argv
+
 from test import build_suite, run_suite
 
-if run_suite(build_suite()).wasSuccessful():
+# We take two command-line arguments. The first enables you to turn
+# off the doctests, which are deterministic. The second tells us to
+# repeat the test suite indefinitely rather than return the result
+# of running it once. The flags usually occur together so that we
+# don't waste time running the doctests in a loop.
+doctests = True
+loop = False
+
+if "--no-doctests" in argv:
+    doctests = False
+
+if "--loop" in argv:
+    loop = True
+
+# Running the test suite clobbers it! And deepcopy() doesn't work on a
+# suite that contains doctests! ARRRGRRGRRGRHG!!!!!! You're all idiots.
+result = run_suite(build_suite(doctests))
+
+if result.wasSuccessful() and not loop:
     exit(0)
-else:
-    exit(1)
+
+if loop:
+    passed = 0
+    while(result.wasSuccessful()):
+        print('Passed: {:d}'.format(passed))
+        passed += 1
+        result = run_suite(build_suite(doctests))
+
+exit(1)