* topic/12953-access-master_test_suite-in-datatest-cases:
Change log
Another example with different arity
Datasets based on std::initializer_list fixes
Delayed/lazy dataset construction
Handling sequences of size 0
# Conflicts:
# doc/closing_chapters/change_log.qbk
# test/Jamfile.v2
Since the previous changes, the elements of the std::initializer_list
get destroyed before the test tree initializes properly. The changes
are
- not relying on a moved std::initializer_list for storing the values
of the dataset. Those are moved to a std::vector instead if the
move constructor is noexcept as expected by std::vector,
- providing a template parameter pack for the same type of constructs
in place of the std::initializer_list
Some of the changes are also related to the fact that VS2013 does not
handle properly the std::initializer_list vs template parameter pack.
The dataset generators need to access runtime variables, which is
possible only after the test framework enters its setup.
The purpose of those changes is to instanciate the dataset and populate
the test tree during the initialization phase and not during the static
instanciation of the different test case:
- new delayed dataset type that is used for holding the parameters of a dataset
and its type. This dataset will be instanciated on demand (lazy construct)
- the test tree is now able to hold a generator until the init phase of the test
module. Once the init reached, the lazy datasets are instanciated and the test
tree populated with new tests.
- operations like zip do not require the size earlier than needed
The fact that the separator is empty for most of the short version
of the runtime parameters make it such that the parameter is considered
as another/next token.
- Skipped tests is not an error
- Handling of skipped tests
- Now printing when a test has been skipped because of the failed precondition
- More demonstrative test
- Unit test reproducing the precondition error issue
* topic/13528-crashes-with-report_sink:
Change log
Execute the callback cleaner also for stdout/stderr
Ensuring shutdown in all execution path
# Conflicts:
# doc/closing_chapters/change_log.qbk
- modifying a bit the API of the unit_test_log to retrieve the stream
- defining a test that checks after the framework executed that the streams
are correct
* topic/13181-collection-compare-missing-typename:
Change log and documentation update
Fixing VS compilation issues
forward_iterable: const_iterator infered by the type returned by begin
- Additional sanitizing logic for chars that appears on runtime filters
- Not sanitizing spaces anymore
- Remove leading and trailing spaces on test names
Most of the difficulty came from the fact that c-strings are also c-arrays, but comparisons are made in a different way (eg. not considering the last \0 element in the computation of the size, etc)
- is_forward_iterable now just checks if the type has accessors that makes it forward iterable (no size member function for instance)
- new concept: is_forward_container_iterable that looks for forward_iterable access + size and specific types. This is needed in order to disambiguate the dataset creation for arrays from the ones for collections
- is_cstring is now only for the C-string type of arrays. std::string and basic_cstring are not a C-strings anymore
- new concept is_cstring_comparable: indicates that types can be compared as if they were strings
- new concept for converting types to a basic_cstring, used for comparisons
- wrapper for accessing the begin/end/size (works for containers and C-arrays
- copy ctor for basic_cstring
- boost.range(begin/end) does not work well for array types
- unit tests for the message part: for checking the dataset, we need to register it and then to re-run it under our own environment (so technically it runs twice in the test module)
- refactoring of tests for reusing the stream checker that is agnostic to filenames location, testing time, etc. Modifying the baseline outputs accordingly
- simplifying the logic behind the operations
- minor doc fixes
- tests output change slightly due to the fact that <= and >= are now going through the
floating point comparison
- considering skipped tests: a skipped test is not considered as an error, especially when there was no logged information
- removing CR/LF from TU names
- updating the JUnit output
- additional refactoring of junit
- new macros:
BOOST_TEST_GLOBAL_FIXTURE: for global "real" fixtures
BOOST_TEST_GLOBAL_CONFIGURATION: for global configuration of observers.
- deprecating BOOST_GLOBAL_FIXTURE. BOOST_GLOBAL_FIXTURE and BOOST_TEST_GLOBAL_CONFIGURATION are currently
fully equivalent, the former being confusing in term of scope/role is deprecated
- SFINAE detection for a setup/teardown function within the fixture class
- Attaching global fixture to the main or master test unit being executed, exactly as other fixtures. Global fixtures
via BOOST_TEST_GLOBAL_FIXTURE registers themselves in a particular field of the framework and are attached each time
the framework executes the tests, such that we can run the framework on another test root and still benefit from the
global fixtures. The global fixtures are appended to already existing fixtures (in case the master test suite is not
the root of the current execution tree).
- Checking that the framework setup is not failing for running the test
- RAII class for restoring the global fixtures
- Tests on the setup/teardown detection
- Tests on global fixtures and baseline
- Fixing several logging issues
Some additional refactoring
- renaming m_curr_test_case to m_curr_test_unit
- function for providing the current test unit (and not only the current test case)
- for output_stream comparison: stops properly if the reference stream is shorter than the current one,
initialises the read char correctly to 0 and prints a proper ~ at the mismatch location
* topic/12540-printing-types-customisation-point:
Change log update
Documenting the customization point
Fixing the tests and checking everything works ok
Test for customization points
Customization points for printing user defined types through `boost_test_print_type`
- junit internal log level to be able to intercept all the intermediate messages (tu enter/exit)
- skipping events that do not match the desired log level
- some refactoring (root of the subtree, getter of the current log)
- logs that do not belong to any TU go to a global log
TODO: global log should be outputted to the stream as well