+# 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)
+
+if loop:
+ passed = 0
+ while(result.wasSuccessful()):
+ print('Passed: {:d}'.format(passed))
+ passed += 1
+ result = run_suite(build_suite(doctests))
+
+exit(1)