36 lines
858 B
Python
36 lines
858 B
Python
#!/usr/bin/env python3
|
|
|
|
import doctest
|
|
|
|
from tombola import Tombola
|
|
|
|
# modules to test
|
|
import bingo, lotto, tombolist, drum # <1>
|
|
|
|
TEST_FILE = 'tombola_tests.rst'
|
|
TEST_MSG = '{0:16} {1.attempted:2} tests, {1.failed:2} failed - {2}'
|
|
|
|
|
|
def main(argv):
|
|
verbose = '-v' in argv
|
|
real_subclasses = Tombola.__subclasses__() # <2>
|
|
virtual_subclasses = [tombolist.TomboList] # <3>
|
|
for cls in real_subclasses + virtual_subclasses: # <4>
|
|
test(cls, verbose)
|
|
|
|
|
|
def test(cls, verbose=False):
|
|
|
|
res = doctest.testfile(
|
|
TEST_FILE,
|
|
globs={'ConcreteTombola': cls}, # <5>
|
|
verbose=verbose,
|
|
optionflags=doctest.REPORT_ONLY_FIRST_FAILURE)
|
|
tag = 'FAIL' if res.failed else 'OK'
|
|
print(TEST_MSG.format(cls.__name__, res, tag)) # <6>
|
|
|
|
|
|
if __name__ == '__main__':
|
|
import sys
|
|
main(sys.argv)
|