[SCons] Include Python unit tests individually in test result summary

This commit is contained in:
Ray Speth 2014-01-09 23:12:32 +00:00
parent a75a9c6e21
commit e31eb0ccf0
2 changed files with 31 additions and 7 deletions

View file

@ -57,8 +57,8 @@ def addTestProgram(subdir, progName):
[], [Delete(passedFile.abspath)]))
def addTestScript(testname, subdir, script, interpreter, args='',
dependencies=(), env_vars={}, optional=False):
def addPythonTest(testname, subdir, script, interpreter, outfile,
args='', dependencies=(), env_vars={}, optional=False):
"""
Create targets for running and resetting a test script.
"""
@ -69,6 +69,8 @@ def addTestScript(testname, subdir, script, interpreter, args='',
del testResults.tests[passedFile.name]
if not os.path.isdir(workDir):
os.mkdir(workDir)
if os.path.exists(outfile):
os.remove(outfile)
environ = dict(env['ENV'])
for k,v in env_vars.iteritems():
@ -80,10 +82,13 @@ def addTestScript(testname, subdir, script, interpreter, args='',
if not code:
# Test was successful
open(target[0].path, 'w').write(time.asctime()+'\n')
testResults.passed[passedFile.name] = True
else:
testResults.failed[passedFile.name] = True
for line in open(outfile):
status, name = line.strip().split(': ', 1)
if status == 'PASS':
testResults.passed[':'.join((testname,name))] = 1
elif status in ('FAIL', 'ERROR'):
testResults.failed[':'.join((testname,name))] = 1
testenv = localenv.Clone()
passedFile = File(pjoin(subdir, '%s.passed' % testname))
@ -169,10 +174,11 @@ def make_python_tests(version):
# tests (test-cython2) for the main suite.
for subset in python_subtests:
name = 'cython%i-' %version + subset if subset else 'cython%i' % version
pyTest = addTestScript(
pyTest = addPythonTest(
name, 'python', 'runCythonTests.py',
args=subset,
interpreter='$python_cmd' if version == 2 else '$python3_cmd',
outfile=File('#test/work/python%d-results.txt' % version).abspath,
dependencies=(localenv['python%i_module' % version] +
localenv['python%i_extension' % version] +
mglob(localenv, test_root, 'py')),

View file

@ -23,13 +23,31 @@ from cantera.test.utilities import unittest
import cantera
import cantera.test
class TestResult(unittest.TextTestResult):
def __init__(self, *args, **kwargs):
unittest.TextTestResult.__init__(self, *args, **kwargs)
self.outfile = open('python%d-results.txt' % sys.version_info[0], 'w')
def addSuccess(self, test):
self.outfile.write('PASS: %s\n' % test)
unittest.TextTestResult.addSuccess(self, test)
def addFailure(self, test, err):
self.outfile.write('FAIL: %s\n' % test)
unittest.TextTestResult.addFailure(self, test, err)
def addFailure(self, test, err):
self.outfile.write('ERROR: %s\n' % test)
unittest.TextTestResult.addFailure(self, test, err)
if __name__ == '__main__':
print('\n* INFO: using Cantera module found at this location:')
print('* ', repr(cantera.__file__), '\n')
sys.stdout.flush()
loader = unittest.TestLoader()
runner = unittest.TextTestRunner(verbosity=2)
runner = unittest.TextTestRunner(verbosity=2, resultclass=TestResult)
suite = unittest.TestSuite()
subsets = []
for name in dir(cantera.test):