mirror of https://gitlab.com/ita1024/waf
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
Python
72 lines
2.0 KiB
Python
#! /usr/bin/env python
|
|
# encoding: utf-8
|
|
# Richard Quirk, 2008
|
|
|
|
"""
|
|
Execute tests during the build - requires cppunit
|
|
|
|
To force all tests, run with "waf build --alltests"
|
|
"""
|
|
|
|
from waflib.Tools import waf_unit_test
|
|
|
|
top = '.'
|
|
out = 'build'
|
|
|
|
def options(opt):
|
|
opt.load('compiler_cxx')
|
|
opt.load('waf_unit_test')
|
|
|
|
def configure(conf):
|
|
conf.load('compiler_cxx')
|
|
conf.load('waf_unit_test')
|
|
|
|
# the demo files require cppunit - but the waf tool does not
|
|
conf.check_cfg(package='cppunit', args='--cflags --libs', mandatory=True)
|
|
if 'dl' not in conf.env.LIB_CPPUNIT:
|
|
l = conf.check(lib='dl', uselib_store='CPPUNIT')
|
|
|
|
# the interpreted tests need python
|
|
conf.find_program('python', mandatory=False)
|
|
|
|
from waflib import Logs
|
|
def summary(bld):
|
|
lst = getattr(bld, 'utest_results', [])
|
|
if lst:
|
|
total = len(lst)
|
|
tfail = len([x for x in lst if x[1]])
|
|
|
|
val = 100 * (total - tfail) / (1.0 * total)
|
|
Logs.pprint('CYAN', 'test report %3.0f%% success' % val)
|
|
|
|
Logs.pprint('CYAN', ' tests that fail %d/%d' % (tfail, total))
|
|
for result in lst:
|
|
if result.exit_code:
|
|
# In ut_task we have the task running the test and we can get any extra information
|
|
# from there (in this example just the generator name)
|
|
Logs.pprint('CYAN', ' %s (%s)' % (result.test_path, result.generator.name))
|
|
Logs.pprint('RED', 'status: %r' % result.exit_code)
|
|
if result.out:
|
|
Logs.pprint('RED', 'out: %r' % result.out)
|
|
if result.err:
|
|
Logs.pprint('RED', 'err: %r' % result.err)
|
|
|
|
def build(bld):
|
|
bld.recurse('src tests')
|
|
|
|
# waf_unit_test.summary is a pretty ugly function for displaying a report (feel free to improve!)
|
|
# results -> bld.utest_results [(filename, returncode, stdout, stderr), (..., ), ...]
|
|
#bld.add_post_fun(waf_unit_test.summary)
|
|
bld.add_post_fun(summary)
|
|
|
|
# to execute all tests:
|
|
# $ waf --alltests
|
|
# to set this behaviour permanently:
|
|
#bld.options.all_tests = True
|
|
bld.options.clear_failed_tests = True
|
|
|
|
# debugging zone:
|
|
# $ waf --zones=ut
|
|
# setting the cwd for a unit test execution: see tests/test1/wscript_build (ut_cwd)
|
|
|