From: Mark Andrews Date: Wed, 20 Feb 2019 00:13:17 +0000 (+1100) Subject: improve clang / cmocka integration X-Git-Tag: v9.15.0~127^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cb913177ae744c729717aa29ae54aa8656c9737e;p=thirdparty%2Fbind9.git improve clang / cmocka integration --- diff --git a/lib/dns/tests/result_test.c b/lib/dns/tests/result_test.c index 14d583f2ec5..517bad381e6 100644 --- a/lib/dns/tests/result_test.c +++ b/lib/dns/tests/result_test.c @@ -15,6 +15,7 @@ #include #include +#include #include #include diff --git a/lib/isc/include/isc/util.h b/lib/isc/include/isc/util.h index ed55e057271..b16b024e74c 100644 --- a/lib/isc/include/isc/util.h +++ b/lib/isc/include/isc/util.h @@ -197,15 +197,26 @@ #ifdef UNIT_TESTING extern void mock_assert(const int result, const char* const expression, const char * const file, const int line); +/* + * Allow clang to determine that the following code is not reached + * by calling abort() if the condition fails. The abort() will + * never be executed as mock_assert() and _assert_true() longjmp + * or exit if the condition is false. + */ #define REQUIRE(expression) \ - mock_assert((int)(expression), #expression, __FILE__, __LINE__) + ((!(expression)) ? \ + (mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0) #define ENSURE(expression) \ - mock_assert((int)(expression), #expression, __FILE__, __LINE__) + ((!(int)(expression)) ? \ + (mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0) #define INSIST(expression) \ - mock_assert((int)(expression), #expression, __FILE__, __LINE__) + ((!(expression)) ? \ + (mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0) #define INVARIANT(expression) \ - mock_assert((int)(expression), #expression, __FILE__, __LINE__) - + ((!(expression)) ? \ + (mock_assert(0, #expression, __FILE__, __LINE__), abort()) : (void)0) +#define _assert_true(c, e, f, l) \ + ((c) ? (void)0 : (_assert_true(0, e, f, l), abort())) #else /* UNIT_TESTING */ /* * Assertions diff --git a/lib/isc/tests/netaddr_test.c b/lib/isc/tests/netaddr_test.c index 875d501e186..7b5920b6abd 100644 --- a/lib/isc/tests/netaddr_test.c +++ b/lib/isc/tests/netaddr_test.c @@ -15,6 +15,7 @@ #include #include +#include #include #include diff --git a/lib/isc/tests/result_test.c b/lib/isc/tests/result_test.c index 38fe12491f4..39f972b82c5 100644 --- a/lib/isc/tests/result_test.c +++ b/lib/isc/tests/result_test.c @@ -15,6 +15,7 @@ #include #include +#include #include #include diff --git a/lib/isccc/tests/result_test.c b/lib/isccc/tests/result_test.c index 1f29d0121d1..a92331423a6 100644 --- a/lib/isccc/tests/result_test.c +++ b/lib/isccc/tests/result_test.c @@ -15,6 +15,7 @@ #include #include +#include #include #include