Browse Source

Squashed 'waflib/' changes from 4687ba6..5ea8f99

5ea8f99 Improve test output spacing
0e23b29 Raise exception when test suite fails to ensure non-zero exit status
d6de073 Show run time of unit tests
5b65554 Add short configure option for ultra-strict flags

git-subtree-dir: waflib
git-subtree-split: 5ea8f99f6e1246079c1fe6bb590c38a53aadd40d
zrythm_meson
David Robillard 4 years ago
parent
commit
668a088c70
  1. 25
      extras/autowaf.py

25
extras/autowaf.py

@ -2,6 +2,7 @@ import glob @@ -2,6 +2,7 @@ import glob
import os
import subprocess
import sys
import time
from waflib import Build, Context, Logs, Options, Utils
from waflib.TaskGen import feature, before, after
@ -69,7 +70,7 @@ def set_options(opt, debug_by_default=False, test=False): @@ -69,7 +70,7 @@ def set_options(opt, debug_by_default=False, test=False):
opts.add_option('-s', '--strict', action='store_true', default=False,
dest='strict',
help="use strict compiler flags and show all warnings")
opts.add_option('--ultra-strict', action='store_true', default=False,
opts.add_option('-S', '--ultra-strict', action='store_true', default=False,
dest='ultra_strict',
help="use extremely strict compiler flags (likely noisy)")
opts.add_option('--docs', action='store_true', default=False, dest='docs',
@ -742,6 +743,7 @@ def pre_test(ctx, appname, dirs=['src']): @@ -742,6 +743,7 @@ def pre_test(ctx, appname, dirs=['src']):
Logs.pprint('GREEN', '\n[==========] Running %s tests' % appname)
if not hasattr(ctx, 'autowaf_tests_total'):
ctx.autowaf_tests_start_time = time.clock()
ctx.autowaf_tests_total = 0
ctx.autowaf_tests_failed = 0
ctx.autowaf_local_tests_total = 0
@ -766,6 +768,9 @@ def pre_test(ctx, appname, dirs=['src']): @@ -766,6 +768,9 @@ def pre_test(ctx, appname, dirs=['src']):
finally:
clear_log.close()
class TestFailed(Exception):
pass
def post_test(ctx, appname, dirs=['src'], remove=['*boost*', 'c++*']):
if not ctx.env.NO_COVERAGE:
diropts = ''
@ -806,11 +811,12 @@ def post_test(ctx, appname, dirs=['src'], remove=['*boost*', 'c++*']): @@ -806,11 +811,12 @@ def post_test(ctx, appname, dirs=['src'], remove=['*boost*', 'c++*']):
coverage_lcov.close()
coverage_log.close()
duration = (time.clock() - ctx.autowaf_tests_start_time) * 1000.0
total_tests = ctx.autowaf_tests[appname]['total']
failed_tests = ctx.autowaf_tests[appname]['failed']
passed_tests = total_tests - failed_tests
Logs.pprint('GREEN', '[==========] %d tests from %s ran' % (
total_tests, appname))
Logs.pprint('GREEN', '\n[==========] %d tests from %s ran (%d ms total)' % (
total_tests, appname, duration))
if not ctx.env.NO_COVERAGE:
Logs.pprint('GREEN', '[----------] Coverage: <file://%s>'
% os.path.abspath('coverage/index.html'))
@ -818,6 +824,7 @@ def post_test(ctx, appname, dirs=['src'], remove=['*boost*', 'c++*']): @@ -818,6 +824,7 @@ def post_test(ctx, appname, dirs=['src'], remove=['*boost*', 'c++*']):
Logs.pprint('GREEN', '[ PASSED ] %d tests' % passed_tests)
if failed_tests > 0:
Logs.pprint('RED', '[ FAILED ] %d tests' % failed_tests)
raise TestFailed('Tests from %s failed' % appname)
Logs.pprint('', '')
top_level = (len(ctx.stack_path) > 1)
@ -892,7 +899,8 @@ def tests_name(ctx, appname, name='*'): @@ -892,7 +899,8 @@ def tests_name(ctx, appname, name='*'):
def begin_tests(ctx, appname, name='*'):
ctx.autowaf_local_tests_failed = 0
ctx.autowaf_local_tests_total = 0
Logs.pprint('GREEN', '[----------] %s' % (
ctx.autowaf_local_tests_start_time = time.clock()
Logs.pprint('GREEN', '\n[----------] %s' % (
tests_name(ctx, appname, name)))
class Handle:
@ -905,14 +913,15 @@ def begin_tests(ctx, appname, name='*'): @@ -905,14 +913,15 @@ def begin_tests(ctx, appname, name='*'):
return Handle()
def end_tests(ctx, appname, name='*'):
duration = (time.clock() - ctx.autowaf_local_tests_start_time) * 1000.0
total = ctx.autowaf_local_tests_total
failures = ctx.autowaf_local_tests_failed
if failures == 0:
Logs.pprint('GREEN', '[----------] %d tests from %s\n' % (
ctx.autowaf_local_tests_total, tests_name(ctx, appname, name)))
Logs.pprint('GREEN', '[----------] %d tests from %s (%d ms total)' % (
ctx.autowaf_local_tests_total, tests_name(ctx, appname, name), duration))
else:
Logs.pprint('RED', '[----------] %d/%d tests from %s\n' % (
total - failures, total, tests_name(ctx, appname, name)))
Logs.pprint('RED', '[----------] %d/%d tests from %s (%d ms total)' % (
total - failures, total, tests_name(ctx, appname, name), duration))
def run_tests(ctx,
appname,

Loading…
Cancel
Save