|
1 | | -import sys |
2 | | -import importlib |
| 1 | +# BEGIN TOMBOLA_RUNNER |
3 | 2 | import doctest |
4 | 3 |
|
5 | 4 | from tombola import Tombola |
6 | 5 |
|
| 6 | +# modules to test |
| 7 | +import bingo, lotto, tombolist, drum # <1> |
| 8 | + |
7 | 9 | TEST_FILE = 'tombola_tests.rst' |
8 | | -MODULE_NAMES = 'bingo lotto tombolist drum'.split() |
9 | 10 | TEST_MSG = '{0:16} {1.attempted:2} tests, {1.failed:2} failed - {2}' |
10 | 11 |
|
11 | 12 |
|
12 | | -def test(cls, verbose=False): |
13 | | - |
14 | | - res = doctest.testfile(TEST_FILE, |
15 | | - globs={'TombolaUnderTest': cls}, |
16 | | - verbose=verbose, |
17 | | - optionflags=doctest.REPORT_ONLY_FIRST_FAILURE) |
18 | | - tag = 'FAIL' if res.failed else 'OK' |
19 | | - print(TEST_MSG.format(cls.__name__, res, tag)) |
| 13 | +def main(argv): |
| 14 | + verbose = '-v' in argv |
| 15 | + real_subclasses = Tombola.__subclasses__() # <2> |
| 16 | + virtual_subclasses = list(Tombola._abc_registry) # <3> |
20 | 17 |
|
| 18 | + for cls in real_subclasses + virtual_subclasses: # <4> |
| 19 | + test(cls, verbose) |
21 | 20 |
|
22 | | -if __name__ == '__main__': |
23 | 21 |
|
24 | | - for name in MODULE_NAMES: # import modules to test, by name |
25 | | - importlib.import_module(name) |
| 22 | +def test(cls, verbose=False): |
26 | 23 |
|
27 | | - verbose = '-v' in sys.argv |
| 24 | + res = doctest.testfile( |
| 25 | + TEST_FILE, |
| 26 | + globs={'ConcreteTombola': cls}, # <5> |
| 27 | + verbose=verbose, |
| 28 | + optionflags=doctest.REPORT_ONLY_FIRST_FAILURE) |
| 29 | + tag = 'FAIL' if res.failed else 'OK' |
| 30 | + print(TEST_MSG.format(cls.__name__, res, tag)) # <6> |
28 | 31 |
|
29 | | - real_subclasses = Tombola.__subclasses__() |
30 | | - virtual_subclasses = list(Tombola._abc_registry) |
31 | 32 |
|
32 | | - for cls in real_subclasses + virtual_subclasses: |
33 | | - test(cls, verbose) |
| 33 | +if __name__ == '__main__': |
| 34 | + import sys |
| 35 | + main(sys.argv) |
| 36 | +# END TOMBOLA_RUNNER |
0 commit comments