Files
sysbench/third_party/cram/tests/run-doctests.py

41 lines
1.2 KiB
Python

#!/usr/bin/env python
import doctest
import os
import sys
def _getmodules(pkgdir):
"""Import and yield modules in pkgdir"""
for root, dirs, files in os.walk(pkgdir):
if '__pycache__' in dirs:
dirs.remove('__pycache__')
for fn in files:
if not fn.endswith('.py') or fn == '__main__.py':
continue
modname = fn.replace(os.sep, '.')[:-len('.py')]
if modname.endswith('.__init__'):
modname = modname[:-len('.__init__')]
modname = '.'.join(['cram', modname])
if '.' in modname:
fromlist = [modname.rsplit('.', 1)[1]]
else:
fromlist = []
yield __import__(modname, {}, {}, fromlist)
def rundoctests(pkgdir):
"""Run doctests in the given package directory"""
totalfailures = totaltests = 0
for module in _getmodules(pkgdir):
failures, tests = doctest.testmod(module)
totalfailures += failures
totaltests += tests
return totalfailures != 0
if __name__ == '__main__':
try:
sys.exit(rundoctests(sys.argv[1]))
except KeyboardInterrupt:
pass