62 lines
1.9 KiB
Python
62 lines
1.9 KiB
Python
|
import os
|
||
|
import sys
|
||
|
import functools
|
||
|
import unittest
|
||
|
import traceback
|
||
|
from fnmatch import fnmatch
|
||
|
from os.path import join, isfile, relpath, normpath, splitext
|
||
|
|
||
|
from .main import NumbaTestProgram, SerialSuite, make_tag_decorator
|
||
|
from numba.core import config
|
||
|
|
||
|
|
||
|
def load_testsuite(loader, dir):
|
||
|
"""Find tests in 'dir'."""
|
||
|
try:
|
||
|
suite = unittest.TestSuite()
|
||
|
files = []
|
||
|
for f in os.listdir(dir):
|
||
|
path = join(dir, f)
|
||
|
if isfile(path) and fnmatch(f, 'test_*.py'):
|
||
|
files.append(f)
|
||
|
elif isfile(join(path, '__init__.py')):
|
||
|
suite.addTests(loader.discover(path))
|
||
|
for f in files:
|
||
|
# turn 'f' into a filename relative to the toplevel dir...
|
||
|
f = relpath(join(dir, f), loader._top_level_dir)
|
||
|
# ...and translate it to a module name.
|
||
|
f = splitext(normpath(f.replace(os.path.sep, '.')))[0]
|
||
|
suite.addTests(loader.loadTestsFromName(f))
|
||
|
return suite
|
||
|
except Exception:
|
||
|
traceback.print_exc(file=sys.stderr)
|
||
|
sys.exit(-1)
|
||
|
|
||
|
|
||
|
def run_tests(argv=None, defaultTest=None, topleveldir=None,
|
||
|
xmloutput=None, verbosity=1, nomultiproc=False):
|
||
|
"""
|
||
|
args
|
||
|
----
|
||
|
- xmloutput [str or None]
|
||
|
Path of XML output directory (optional)
|
||
|
- verbosity [int]
|
||
|
Verbosity level of tests output
|
||
|
|
||
|
Returns the TestResult object after running the test *suite*.
|
||
|
"""
|
||
|
|
||
|
if xmloutput is not None:
|
||
|
import xmlrunner
|
||
|
runner = xmlrunner.XMLTestRunner(output=xmloutput)
|
||
|
else:
|
||
|
runner = None
|
||
|
prog = NumbaTestProgram(argv=argv,
|
||
|
module=None,
|
||
|
defaultTest=defaultTest,
|
||
|
topleveldir=topleveldir,
|
||
|
testRunner=runner, exit=False,
|
||
|
verbosity=verbosity,
|
||
|
nomultiproc=nomultiproc)
|
||
|
return prog.result
|