check:
PYTHONPATH="." test/__main__.py
-.PHONE: checkloop
+.PHONY: checkloop
checkloop:
- COUNT=0; \
- while [ $$? -eq 0 ]; do \
- COUNT=`expr $$COUNT + 1`; \
- echo $$COUNT; \
- PYTHONPATH="." test/__main__.py; \
- done;
+ PYTHONPATH="." test/__main__.py --no-doctests --loop
.PHONY: lint
lint:
from test import randomgen
from test import symmetric_linear_game_test
-def build_suite():
+def build_suite(doctests=True):
"""
Build our test suite, separately from running it.
+
+ Parameters
+ ----------
+
+ doctests : bool
+ Do you want to build the doctests, too? During random testing,
+ the answer may be "no."
+
"""
suite = TestSuite()
- suite.addTest(DocTestSuite(cones))
- suite.addTest(DocTestSuite(errors, optionflags=ELLIPSIS))
- suite.addTest(DocTestSuite(games, optionflags=ELLIPSIS))
- suite.addTest(DocTestSuite(matrices, optionflags=ELLIPSIS))
- suite.addTest(DocTestSuite(symmetric_linear_game_test))
- suite.addTest(DocTestSuite(randomgen, optionflags=ELLIPSIS))
+ if doctests:
+ suite.addTest(DocTestSuite(cones))
+ suite.addTest(DocTestSuite(errors, optionflags=ELLIPSIS))
+ suite.addTest(DocTestSuite(games, optionflags=ELLIPSIS))
+ suite.addTest(DocTestSuite(matrices, optionflags=ELLIPSIS))
+ suite.addTest(DocTestSuite(symmetric_linear_game_test))
+ suite.addTest(DocTestSuite(randomgen, optionflags=ELLIPSIS))
slg_tests = TestLoader().loadTestsFromModule(symmetric_linear_game_test)
suite.addTest(slg_tests)
mat_tests = TestLoader().loadTestsFromModule(matrices_test)
"""
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:
+ while(result.wasSuccessful()):
+ result = run_suite(build_suite(doctests))
+
+exit(1)