...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
Boost.Test releases:
framework_init_observer_t
basic_cstring<CharT>::trim_right
BOOST_TEST_GLOBAL_FIXTURE
documentation misleading
framework_init_observer_t
priority_order
enum
arity with static constexpr
boost_test_print_type
customization point in lazy_ostream
execution_aborted
exception to allow catching it from outside the DLL
catch_system_error
option was
set to no
. Thanks to Tom Hughes for this feature.
It is now possible to combine tolerance indication, user message and collection
comparison modifier in a single BOOST_TEST
expression
std::vector<double> v1 = f(); std::vector<double> v2{1.1, 1.19}; BOOST_TEST(v1 == v2, boost::test_tools::tolerance( 1e-3 ) << "comparison to ground truth failed" << boost::test_tools::per_element());
test_tools-test
failed on some archs
nvcc
umask
)
-Wattributes
warnings that cannot be suppressed using included
variant
-Wdelete-non-abstract-non-virtual-dtor
triggered by test_case_gen
[-Wfloat-equal]
BOOST_HEADER_DEPRECATED
BOOST_AUTO_TEST_CASE_TEMPLATE
when tests are skipped
BOOST_TEST_NO_LIB
msvc
versions
/W4
)
BOOST_TEST
with tolerance and user-message (through #GH-173)
unit_test_main.ipp
__linux__
instead of __linux
std::basic_ostream::operator<<
from wchar_t
root_test_unit_id
C4265
warnings in test when using Visual Studio 2015 (duplicates #11107)
std::string_view
has been added.
boost::exception
and no rtti mode (thanks to Mikhail Pilin / #PR-234)
bool
initializer list
-t
, --run_test
) if template type contains multiple
parameters
printf
format
checking attribute to report_error
SI_ASYNCIO
and SI_MESGQ
boost::diagnostic_information()
works in no rtti
mode
BOOST_TEST
can be used
to compare abstract types
BOOST_TEST_CHECK
can't compare abstract classes using gcc
stack_decorator::apply
)
BOOST_HEADER_DEPRECATED
to deprecated headers
sample
anymore
BOOST_TEST_CONTEXT
.
BOOST_TEST_INFO_SCOPE
let define
a context for the current scope in a sticky way.
It is now possible to use floating point comparison without being required to cast both operands to floating point types. Now Boost.Test uses floating point comparisons for expressions such as
BOOST_TEST(3.0001 == 3);
See this section for more information.
Boost.Test minimal.hpp
is now showing a deprecation warning.
minimal.hpp
has been deprecated for a long time
already, and will be removed in the near future. Please switch to eg. the
header only variable of Boost.Test. Tests using minimal.hpp
can readily be converted to the header variant. For instance, the following
code:
#include <boost/test/minimal.hpp> int test_main( int, char *[] ) { ... }
may be rewritten as:
#include <boost/test/included/unit_test.hpp> BOOST_AUTO_TEST_CASE(test_main) { ... }
boost::unit_test::unit_test_log_formatter::log_build_info
has slightly changed to accept an additional boolean argument. If you have
a custom logger, you will need to update its signature.
BOOST_DATA_TEST_CASE
const
-volatile
specifiers
-Wformat-overflow
when optimization is enabled on GCC 8.2.0
UBSAN
identified
a problem at exit time by gcc-8
only
[snippet_dataset1_3]
seems to be broken
boost_check_equal-str-test
failed on llvm
doc_example22
(and 23
) are expected to fail,
but do not on clang with release variant builds
master_test_suite
declared twice
BOOST_UNIT_TEST_FRAMEWORK_DYN_LINK
et al
type_mismatch
after upgrade to 1.69
boost/timer.hpp
is deprecated
windows.h
should be lower case
ar
parameter
of assertion_result
to
avoid warning
BOOST_SYMBOL_VISIBLE
cannot be used for enums
with Sun Studio
NDEBUG
is defined
bind1st
in example 12
example
04
master_test_suite
is declared differently
BOOST_TEST_CONTEXT
that doesn't require introducing a new scope with braces
vsnprintf
compile errors and warnings
1.48
is using the deprecated Boost.Timer
class (solved via #GH-202)
namespace boost::timer {}
re-declared as different kind of symbol (solved via #GH-202)
libs/test/tools/console_test_runner
does not compile
BOOST_AUTO_TEST_CASE_TEMPLATE()
BOOST_TEST_CASE_NAME
boost::exception
close_at_tolerance
always returns false
for comparisons
of infinity
boost_test_print_type
does not work when testing a type with an explicit conversion to bool
v1.68.0
boost::exception
appears after std::exception
in execution_monitor::execute()
BOOST_CLANG
is not defined, evaluates to 0
--color_output=no
, don't output color codes
+
corrupts first column (duplicates #12216)
-Werror=missing-declarations
on some architectures
BOOST_TEST_CASE
argc
and argv
of the master
test suite. For indicating a dataset that should be instantiated in a delayed
manner, a new data::make_delayed
helper has been introduced.
data::make
,
with variable number of arguments. As the datasets are monomorphic, it
should be possible to cast all elements to the first element type.
master_test_suite_t
is not copyable
anymore.
std::initializer_list
.
master_test_suite().{argc, argv}
[Boost::Test]
short form of catch_system_errors
not working
--report_sink
command-line parameter is
used
std::cout
or std::cerr
.
This can be disabled by passing --no_color_ouput
(or just --no_color
)
to the command line.
BOOST_AUTO_TEST_CASE_TEMPLATE
now accepts a sequence of types in an std::tuple
[clang]
Fix [-Wc++11-narrowing]
error
gcc
>= 7
stdcerr
file
creation on shutdown
Windows.h
include
to all-lowercase (MinGW)
std::tuple
typelists in BOOST_AUTO_TEST_CASE_TEMPLATE
print_helper_t<nullptr_t>
under Clang
errors.hpp
in Boost Test requires warning C4946
to be off
BOOST_AUTO_TEST_CASE_TEMPLATE
don't want typedef
for list
begin
and end
but not const_iterator
--log_sink=file
BOOST_TEST_GLOBAL_CONFIGURATION
(result report shutdown time)
BOOST_GLOBAL_FIXTURE
is flagged
as deprecated and will be removed in a later version
BOOST_GLOBAL_FIXTURE
. Please use
BOOST_TEST_GLOBAL_FIXTURE
instead
(see below).
BOOST_GLOBAL_FIXTURE
in favor
of BOOST_TEST_GLOBAL_FIXTURE
and
BOOST_TEST_GLOBAL_CONFIGURATION
.
This helps separating the logic of the fixtures associated to the master
test suite, from the one used for setting up the logging and reporting
facility, and results in a general cleaner design.
BOOST_TEST
check to comparing
a collection with respect to regular arrays. See this
section for more details.
random_shuffle
by more modern equivalents
BOOST_TEST_MESSAGE
in fixture constructor - invalid XML
BOOST_TEST_MESSAGE
generates incorrect output when used in BOOST_DATA_TEST_CASE
BOOST_TEST
broken
with floating point relational operators
operator<<
for a specific type.
success
and
non-fatal error
,
and defaults to general information
.
BOOST_NO_EXCEPTIONS
typo making throw_exception
unusable under some circumstances
FE_*
macros (unable to compile boost test library
on FPU-less arches) (reopened)
BOOST_AUTO_TEST_SUITE
:
Generate unique names by using __COUNTER__
VERSION
nullptr
issue)
:
' is interpreted as a filter separators
since 1.62, and it is otherwise not possible to execute the tests reported
by --list_content
.
See #12531 for more details.
per_element
and lexicographic
modifiers of BOOST_TEST
can also be applied
to string comparison. See string
comparison for more details.
FE_*
macros (unable to compile boost test library
on FPU-less arches)
BOOST_TEST()
treat std::string
as a collection?
report_sink
description
--report_sink
parameter broken
--run_test
in Boost 1.62 does not accept test names which contain ':'
--run_test
generates tokens as if --run_test
has been repeated, which enables
the set up of several test filters through the associated environment variable
BOOST_TEST_RUN_FILTERS
--logger
and corresponding environment variable BOOST_TEST_LOGGER
for more details.
BOOST_TEST_DISABLE_ALT_STACK
for
more details.
[bb10/qnx failures]
Build error
BOOST_DATA_TEST_CASE
abi::__cxa_demangle
on android
getchar()
is defined as a macro in uClibc
)
std::tuple
has broken
test_units
generated from test_case_gen
boost/test/impl/debug.ipp
: Ignores return value from WaitForSingleObject
BOOST_DATA_TEST_CASE
BOOST_TEST(3u == (std::max)(0u, 3u))
fails
BOOST_DATA_TEST_CASE
fails to compile for 4D and higher dimensional grids
make
as
top left dataset is not necessary anymore
reports invalid or ambiguous parameters: this might break existing calls when user defined commands are provided to the test module. The following calling convention should be adopted:
--
--
, if any
Example: the call
test_module --user-arg1=xy --log_level=test_suite
should be rewritten to
test_module --log_level=test_suite -- --user-arg1=xy
<osreldate.h>
before testing __FreeBSD_version
(fixed in 1.59)
init_unit_test_suite
are incorrect when using path and whitespaces
ostream
precision after any Test macro (fixed in 1.59)
argv
if a paramter contains whitespace
BOOST_TEST( ..., per_element()
)
comparison of vector<string>
BOOST_TEST()
statements
BOOST_TEST(
0.0 ==
0.0 )
fails under C++11 (GCC and Clang)
BOOST_TEST(
..., per_element() )
erroneously
requires collections are comparable
BOOST_TEST
generic assertion
color_output
list_content
BOOST_<level>_EQUAL_COLLECTION
docs typo
_CrtSetReportFile
can be used to redirect memory leaks report
init_tests_func
BOOST_TEST_PASSPOINT
macro
GT
is GREAT!
vserver
environment (duplicates ##3592)
SIGCHLD
always
considered fatal error
BOOST_<level>_GT
description (duplicates ##3463)
BOOST_<level>_CLOSE_FRACTION
is incorrect
<boost/test/exception_safety.hpp>
requires additional includes
BOOST_AUTO_EST_CASE
typos in docs
stderr
]]>
incorrectly
BOOST_AUTO_TEST_CASE_TEMPLATE
putenv
declaration (duplicates #6766)
putenv
in config.hpp
BOOST_<level>_CLOSE_FRACTION
is not reflected into released documents
__FILE__
and __LINE__
at declaration point making it impossible to provide source file linking
using external test management tools
BOOST_REQUIRE_CLOSE
fails to compile with boost::multiprecision::cpp_dec_float_100
(duplicates ##11054)
enable_if/disable_if
templates
const_string.hpp/const_string_test.cpp
)
BOOST_<level>_GT
documentation bug (duplicates ##3463)
BOOST_TEST_DONT_PRINT_LOG_VALUE
sigaltstack
DS
identifier
causes test failures in doc/examples/dataset_example*.cpp
BOOST_CHECK_EQUAL_COLLECTIONS
:
can't control output operator (duplicates #9390)