However rare, this update covers real-world use cases where:
- Unity is used to provide the assertion macros only, and an external
test harness/runner is used for test orchestration/reporting.
- Calling longjmp on a given platform is possible, but has a
platform-specific (or implementation-specific) set of prerequisites,
e.g. privileged access level.
Enable project-specific customisation of TEST_PROTECT and TEST_ABORT
macros.
- Use the user-defined UNITY_TEST_ABORT if available; fall back to
default behaviour otherwise.
- Use the user-defined UNITY_TEST_PROTECT if available; fall back to
default behaviour otherwise.
- These may be defined independently.
GCC (& Clang) have the notion of pure and const functions [1],
where those attributes are intended to help the optimiser.
Annotate a few APIs here with the appropriate key words, which
also fixes Wsuggest-attribute=noreturn warning, which a
source base might have enabled:
Compiling unity.c...
.../src/unity.c: In function ‘UnityFail’:
.../src/unity.c:1759:6: warning: function might be candidate for attribute ‘noreturn’ [-Wsuggest-attribute=noreturn]
1759 | void UnityFail(const char* msg, const UNITY_LINE_TYPE line)
| ^~~~~~~~~
.../src/unity.c: In function ‘UnityIgnore’:
.../src/unity.c:1796:6: warning: function might be candidate for attribute ‘noreturn’ [-Wsuggest-attribute=noreturn]
1796 | void UnityIgnore(const char* msg, const UNITY_LINE_TYPE line)
| ^~~~~~~~~~~
[1] https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
Signed-off-by: André Draszik <git@andred.net>
Depends on UnityPrintFormatted (define UNITY_INCLUDE_PRINT_FORMATTED).
UnityPrintFormatted has been renamed to UnityPrintF due to changes below.
API of UnityPrintFormatted has been changed (hence the rename), but end users
(developers) can use the TEST_PRINTF as an almost-drop-in replacement TEST_PRINTF
is compatible with the old UnityPrintFormatted API (see below).
The behaviour of UnityPrintF has also been changed:
- Now it prefixes the outout with test location information Output is marked
as INFO.
- It adds an EOL.
Both behaviours adopted from other output functions.
By passing --omit_begin_end=1 to generate_test_runner.rb, the script
will now omit calls to UnityBegin and UnityEnd when running tests in a
suite.
This allows multiple suites to be executed in a row, and then have an overall
summary of the tests which were executed across all suites.