A better test discovery function

This commit is contained in:
Kovid Goyal 2016-06-21 22:17:16 +05:30
parent 6f362f1567
commit 1e7ab5cdcc
3 changed files with 24 additions and 6 deletions

View File

@ -7,7 +7,7 @@ __license__ = 'GPL v3'
__copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2013, Kovid Goyal <kovid at kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import unittest, os, argparse, time, functools import unittest, os, argparse, time, functools, importlib
try: try:
import init_calibre # noqa import init_calibre # noqa
@ -59,7 +59,13 @@ class TestResult(unittest.TextTestResult):
self.stream.writeln('\nSlowest tests: %s' % ' '.join(slowest)) self.stream.writeln('\nSlowest tests: %s' % ' '.join(slowest))
def find_tests(): def find_tests():
return unittest.defaultTestLoader.discover(os.path.dirname(os.path.abspath(__file__)), pattern='*.py') base = os.path.dirname(os.path.abspath(__file__))
suits = []
for x in os.listdir(base):
if x.endswith('.py') and x != 'main.py':
m = importlib.import_module('calibre.db.tests.' + x.partition('.')[0])
suits.append(unittest.defaultTestLoader.loadTestsFromModule(m))
return unittest.TestSuite(suits)
def run_tests(find_tests=find_tests): def run_tests(find_tests=find_tests):
parser = argparse.ArgumentParser() parser = argparse.ArgumentParser()

View File

@ -12,10 +12,16 @@ try:
except ImportError: except ImportError:
pass pass
import os, unittest import os, unittest, importlib
def find_tests(): def find_tests():
return unittest.defaultTestLoader.discover(os.path.dirname(os.path.abspath(__file__)), pattern='*.py') base = os.path.dirname(os.path.abspath(__file__))
suits = []
for x in os.listdir(base):
if x.endswith('.py') and x != 'main.py':
m = importlib.import_module('calibre.ebooks.oeb.polish.tests.' + x.partition('.')[0])
suits.append(unittest.defaultTestLoader.loadTestsFromModule(m))
return unittest.TestSuite(suits)
if __name__ == '__main__': if __name__ == '__main__':
from calibre.db.tests.main import run_tests from calibre.db.tests.main import run_tests

View File

@ -6,7 +6,7 @@ from __future__ import (unicode_literals, division, absolute_import,
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2015, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2015, Kovid Goyal <kovid at kovidgoyal.net>'
import unittest, os, argparse, time, functools import unittest, os, argparse, time, functools, importlib
try: try:
import init_calibre import init_calibre
@ -59,7 +59,13 @@ class TestResult(unittest.TextTestResult):
self.stream.writeln('\nSlowest tests: %s' % ' '.join(slowest)) self.stream.writeln('\nSlowest tests: %s' % ' '.join(slowest))
def find_tests(): def find_tests():
return unittest.defaultTestLoader.discover(os.path.dirname(os.path.abspath(__file__)), pattern='*.py') base = os.path.dirname(os.path.abspath(__file__))
suits = []
for x in os.listdir(base):
if x.endswith('.py') and x != 'main.py':
m = importlib.import_module('calibre.srv.tests.' + x.partition('.')[0])
suits.append(unittest.defaultTestLoader.loadTestsFromModule(m))
return unittest.TestSuite(suits)
def run_tests(find_tests=find_tests): def run_tests(find_tests=find_tests):
from calibre.gui2 import ensure_app, load_builtin_fonts from calibre.gui2 import ensure_app, load_builtin_fonts