# See http://www.boost.org/libs/test for the library home page.
import path ;
+import project ;
+import property ;
+import property-set ;
+import "class" : new ;
import ../../config/checks/config : requires ;
-project
+project boost/test-tests
: requirements
;
+import ../../predef/check/predef
+ : check require
+ : predef-check predef-require ;
+
local check_msg = "Boost.Test feature check: " ;
# documentation requirements: we use new style examples in the doc and compile on compilers supporting that
# So deactivate those warnings again
<toolset>gcc:<cxxflags>-pedantic
<toolset>gcc:<cxxflags>-Wno-long-long
- <toolset>gcc:<cxxflags>-Wno-variadic-macros
+ [ predef-check "BOOST_COMP_GNUC >= 4.3.0" : : <cxxflags>-Wno-variadic-macros ]
<toolset>clang:<cxxflags>-Wno-c99-extensions
<toolset>clang:<cxxflags>-Wno-variadic-macros
# <toolset>gcc:<cxxflags>--coverage
[ boost.test-self-test run : framework-ts : result-report-test : : baseline-outputs/result-report-test.pattern ]
[ boost.test-self-test run : framework-ts : log-formatter-test : : baseline-outputs/log-formatter-test.pattern ]
[ boost.test-self-test run : framework-ts : run-by-name-or-label-test ]
+ [ boost.test-self-test run : framework-ts : version-uses-module-name : included ]
+ [ boost.test-self-test run : framework-ts : test-macro-global-fixture : : baseline-outputs/global-fixtures-test.pattern ]
+ [ boost.test-self-test run : framework-ts : message-in-datatestcase-test : : baseline-outputs/messages-in-datasets-test.pattern : : : : $(requirements_datasets) ]
;
#_________________________________________________________________________________________________#
[ boost.test-self-test run : writing-test-ts : dont_print_log_value-test : : : : : : $(requirements_datasets) ]
[ boost.test-self-test run : writing-test-ts : fp-comparisons-test : : : : : : $(requirements_boost_test_full_support) ]
[ boost.test-self-test run : writing-test-ts : fp-multiprecision-comparison-test : : : : : : $(requirements_boost_test_full_support) ]
+ [ boost.test-self-test run : writing-test-ts : fp-relational-operator ]
[ boost.test-self-test run : writing-test-ts : output_test_stream-test ]
[ boost.test-self-test run : writing-test-ts : test_tools-test : : baseline-outputs/test_tools-test.pattern : : : : $(requirements_boost_test_full_support) ]
[ boost.test-self-test run : writing-test-ts : windows-headers-test ]
[ boost.test-self-test run : writing-test-ts : tools-under-debugger-test ]
[ boost.test-self-test run : writing-test-ts : tools-debuggable-test : : : : : : $(requirements_boost_test_full_support) ]
[ boost.test-self-test run : writing-test-ts : test-dataset-over-tuples : : : : : : $(requirements_datasets) ]
+ [ boost.test-self-test run : writing-test-ts : nullptr-support-test : : : : : : [ requires cxx11_nullptr ] ]
+ [ boost.test-self-test run : writing-test-ts : user-defined-types-logging-customization-points ]
+ [ boost.test-self-test run : writing-test-ts : test-fixture-detect-setup-teardown ]
+ [ boost.test-self-test run : writing-test-ts : test-fixture-detect-setup-teardown-cpp11 : : : : : : [ requires cxx11_decltype cxx11_trailing_result_types ] ]
;
#_________________________________________________________________________________________________#
[ boost.test-self-test run : test-organization-ts : test_unit-order-test ]
[ boost.test-self-test run : test-organization-ts : test_unit-order-shuffled-test : : : : : : $(requirements_boost_test_full_support) ]
[ boost.test-self-test run : test-organization-ts : test-tree-management-test ]
+ [ boost.test-self-test run : test-organization-ts : test-tree-several-suite-decl ]
;
#_________________________________________________________________________________________________#
#_________________________________________________________________________________________________#
+class bt-conditional-sink
+{
+ import property-set ;
+ import targets ;
+ import property ;
+
+ rule __init__ ( logger : log_or_report : sink_is_file : log_new_style )
+ {
+ self.logger = $(logger) ;
+ sink_is_file ?= "no" ;
+ self.sink_is_file = $(sink_is_file) ;
+ self.log_or_report = $(log_or_report) ;
+ self.log_new_style = $(log_new_style) ;
+ }
+
+ rule check ( properties * )
+ {
+ local ps = [ property-set.create $(properties) ] ;
+ local path,relative-to-build-dir = [ $(ps).target-path ] ;
+ local path = $(path,relative-to-build-dir[1]) ;
+
+ local ret ;
+ if $(self.log_new_style) = "yes" && $(self.log_or_report) = "log"
+ {
+ ret += "<testing.arg>--logger=$(self.logger)" ;
+
+ if $(self.sink_is_file) = "yes"
+ {
+ ret += ",,smoke-ts-sink-new-style.$(self.logger):" ;
+ }
+
+ ret = $(ret:J) ;
+ }
+ else
+ {
+ ret += <testing.arg>--$(self.log_or_report)_format=$(self.logger) ;
+
+ if $(self.sink_is_file) = "yes"
+ {
+ ret += <testing.arg>--$(self.log_or_report)_sink=smoke-ts-sink.$(self.logger) ;
+ }
+ }
+ #ECHO ret is $(ret) ;
+ #ECHO ret2 is $(ret:J) ;
+ return $(ret) ;
+ }
+}
+
+rule boost.test-smoke-ts-logger ( test-name-prefix : logger ? : log_or_report ? : requirements ? : log_new_style ? )
+{
+ logger ?= HRF ;
+ log_or_report ?= log ;
+ log_new_style ?= no ;
+
+ local detailed_name = all ;
+ if $(log_or_report) = report
+ {
+ detailed_name = detailed ;
+ }
+
+ requirements ?= $(requirements_datasets) ;
+
+ local bt-format-instance = [ new bt-conditional-sink $(logger) : $(log_or_report) : "no" : $(log_new_style) ] ;
+ local bt-format-sink-instance = [ new bt-conditional-sink $(logger) : $(log_or_report) : "yes" : $(log_new_style) ] ;
+
+ local conditions-format = <conditional>@$(bt-format-instance).check ;
+ local conditions-format-sink = <conditional>@$(bt-format-sink-instance).check ;
+
+ to-return =
+ [ run smoke-ts-included :
+ : : $(requirements) $(conditions-format) : $(test-name-prefix)-0-$(log_or_report)-format-$(log_new_style) ]
+ [ run smoke-ts-included : --$(log_or_report)_level=$(detailed_name)
+ : : $(requirements) $(conditions-format) : $(test-name-prefix)-1-$(log_or_report)-format-$(log_new_style)-all ]
+ [ run smoke-ts-included :
+ : : $(requirements) $(conditions-format-sink) : $(test-name-prefix)-2-$(log_or_report)-format-to-file-$(log_new_style) ]
+ [ run smoke-ts-included : --$(log_or_report)_level=$(detailed_name)
+ : : $(requirements) $(conditions-format-sink) : $(test-name-prefix)-3-$(log_or_report)-format-to-file-$(log_new_style)-all ]
+ [ run smoke-ts-included : --run_test=test1/_2
+ : : $(requirements) $(conditions-format) : $(test-name-prefix)-4-$(log_or_report)-format-$(log_new_style)-filter ]
+ ;
+
+ return $(to-return) ;
+}
+
+exe smoke-ts-included : smoke-ts/basic-smoke-test.cpp
+ : $(requirements_datasets) ;
+
+exe smoke-ts-included-2 : smoke-ts/basic-smoke-test2.cpp ;
+
+alias "smoke-ts"
+:
+[ boost.test-smoke-ts-logger bt-st-txml : XML : log ]
+[ boost.test-smoke-ts-logger bt-st-txml : XML : log : : yes ]
+[ boost.test-smoke-ts-logger bt-st-txml : XML : report ]
+[ boost.test-smoke-ts-logger bt-st-thrf : HRF : log ]
+[ boost.test-smoke-ts-logger bt-st-thrf : HRF : log : : yes ]
+[ boost.test-smoke-ts-logger bt-st-thrf : HRF : report ]
+[ boost.test-smoke-ts-logger bt-st-tjunit : JUNIT : log ]
+[ boost.test-smoke-ts-logger bt-st-tjunit : JUNIT : log : : yes ]
+[ run smoke-ts-included-2 : <testing.arg>\"--run_test=test<*\" : : : bt-st-runtest-with-colons ]
+[ run smoke-ts-included : --version : : $(requirements_datasets) : cla-check-print-version ]
+# : $(requirements_datasets)
+;
+
+#_________________________________________________________________________________________________#
+
# A target that runs all the tests
alias test
:
+ smoke-ts
utils-ts
usage-variants-ts
framework-ts