Human-friendly unit testing for C++11
For a list of releases including release notes, go to bandit’s releases page on GitHub.
Bandit will be using Semantic Versioning 2.0.0 beginning from the next major release v3.0.0. In the following, we list breaking changes per major release.
The default
formatter is renamed to posix
.
The --no-color
option is replaced by --colorizer=off
. It now can be
understood as choosing the off
color theme instead of turning colors off.
In prior versions, an error was raised in case no tests were available
or all tests were skipped. Now the exit code is 0
in these cases because
no tests are failing.
The signatures of the grammar functions (it()
, describe()
,
before_each()
, etc.) have changed.
For it()
and describe()
(and their skipping counterparts),
the first parameter (the description) is now a const std::string&
instead of const char*
.
it()
and describe()
also got an optional third parameter that says
if it should be skipped or not.
Both changes should not break any sane existing code but the former
allows to write description-generating code more nicely and
the latter eases skipping (or not) based on the program flow.
The grammar and runner now use bandit::detail::controller_t
as optional parameters
instead of reporters, run policies, etc. This is a change of the public
API that is probably only of internal interest.
The behavior of combined --only
and --skip
has changed.
You can now use these switches multiple times and they always act as a filter,
that is, you can only reduce the list of tests by adding a --only
or --skip
switch.
In prior versions, contexts matching --skip
were ignored when they contained
a matching --only
.
If you use after_each()
in nested describe()
s, the order of processing them
is now reversed, i.e., the inner after_each()
is run before the outer one.
Also, inner after_each()
s are only called if their corresponding before_each()
s
did not fail (or do not exist).
The option handling became stricter.
Illegal option arguments like --reporter=invalid
result in an error now.
The assertion framework Snowhouse v5.0.0 is used including all its breaking changes.
The snowhouse
namespace is not used by default.
To make your old code compile, it may be necessary to add
using namespace snowhouse;