@ -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 ,