72 lines
1.9 KiB
Python
72 lines
1.9 KiB
Python
from __future__ import print_function
|
|
import sys
|
|
import os
|
|
import unittest
|
|
import subprocess
|
|
import llvm
|
|
|
|
tests = [] # stores unittest.TestCase objects
|
|
|
|
# Isolated tests
|
|
# Tests that affect process-wide settings
|
|
isolated_tests = [] # stores modue name
|
|
|
|
|
|
def run(verbosity=1, run_isolated=True):
|
|
print('llvmpy is installed in: ' + os.path.dirname(__file__))
|
|
print('llvmpy version: ' + llvm.__version__)
|
|
print(sys.version)
|
|
|
|
files = filter(lambda s: s.startswith('test_') and s.endswith('.py'),
|
|
os.listdir(os.path.dirname(__file__)))
|
|
|
|
for f in files:
|
|
fname = f.split('.', 1)[0]
|
|
__import__('.'.join([__name__, fname]))
|
|
|
|
suite = unittest.TestSuite()
|
|
for cls in tests:
|
|
if cls:
|
|
suite.addTest(unittest.makeSuite(cls))
|
|
|
|
# The default stream fails in IPython qtconsole on Windows,
|
|
# so just using sys.stdout
|
|
|
|
kwargs = dict(verbosity=verbosity, stream=sys.stdout)
|
|
|
|
if sys.version_info[:2] > (2, 6):
|
|
kwargs['buffer'] = True
|
|
runner = unittest.TextTestRunner(**kwargs)
|
|
|
|
try:
|
|
from guppy import hpy
|
|
except ImportError:
|
|
testresult = runner.run(suite)
|
|
else:
|
|
hp = hpy()
|
|
hp.setref()
|
|
testresult = runner.run(suite)
|
|
print(hp.heap())
|
|
|
|
if testresult and run_isolated:
|
|
# Run isolated tests
|
|
print("run isolated tests".center(80, '-'))
|
|
|
|
for test in isolated_tests:
|
|
print(('testing %s' % test).center(80))
|
|
|
|
cmd = [sys.executable, '-m', test]
|
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE,
|
|
stderr=subprocess.STDOUT)
|
|
for line in p.stdout:
|
|
print(line.decode('utf8'), end='')
|
|
p.wait()
|
|
if p.returncode:
|
|
raise Exception("%s returned: %d" % (test, p.returncode))
|
|
|
|
return testresult
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|
|
|