From 44b182c9a7764490451ff62736ea737b455712b2 Mon Sep 17 00:00:00 2001 From: Maurice Gilden Date: Wed, 12 Jan 2022 22:09:17 +0100 Subject: [PATCH] Improve definitions for googletest ASSERT_* macros (#3694) This avoids assertWithSideEffect and follows more closely what the real macros are doing, similar to the ones in boost.cfg and cppunit.cfg. --- cfg/googletest.cfg | 26 +++++++++++++------------- test/cfg/googletest.cpp | 28 +++++++++++++++++++++++++++- 2 files changed, 40 insertions(+), 14 deletions(-) diff --git a/cfg/googletest.cfg b/cfg/googletest.cfg index 3b2450e6c..c93862d64 100644 --- a/cfg/googletest.cfg +++ b/cfg/googletest.cfg @@ -1,29 +1,29 @@ - - + + - + - + - + - + - + - + - + - + - + - + - + diff --git a/test/cfg/googletest.cpp b/test/cfg/googletest.cpp index 929095daa..bff59dc1a 100644 --- a/test/cfg/googletest.cpp +++ b/test/cfg/googletest.cpp @@ -47,6 +47,32 @@ TEST(test_cppcheck, cppcheck) // #9964 - avoid compareBoolExpressionWithInt false positive TEST(Test, assert_false_fp) { - // cppcheck-suppress checkLibraryNoReturn ASSERT_FALSE(errno < 0); } + +// Check that conditions in the ASSERT_* macros are processed correctly. +TEST(Test, warning_in_assert_macros) +{ + int i = 5; + int j = 6; + + // cppcheck-suppress knownConditionTrueFalse + ASSERT_TRUE(i == 5); + // cppcheck-suppress knownConditionTrueFalse + ASSERT_FALSE(i != 5); + // cppcheck-suppress duplicateExpression + ASSERT_EQ(i, i); + ASSERT_NE(i, j); // expected knownConditionTrueFalse... + ASSERT_LT(i, j); // expected knownConditionTrueFalse... + // cppcheck-suppress duplicateExpression + ASSERT_LE(i, i); + ASSERT_GT(j, i); // expected knownConditionTrueFalse + // cppcheck-suppress duplicateExpression + ASSERT_GE(i, i); + + unsigned int u = errno; + // cppcheck-suppress unsignedPositive + ASSERT_GE(u, 0); + // cppcheck-suppress unsignedLessThanZero + ASSERT_LT(u, 0); +}