diff options
Diffstat (limited to 'vespalib')
-rw-r--r-- | vespalib/src/tests/require/require_test.cpp | 15 | ||||
-rw-r--r-- | vespalib/src/vespa/vespalib/util/require.h | 7 |
2 files changed, 22 insertions, 0 deletions
diff --git a/vespalib/src/tests/require/require_test.cpp b/vespalib/src/tests/require/require_test.cpp index 65f4d049843..b31cbd33723 100644 --- a/vespalib/src/tests/require/require_test.cpp +++ b/vespalib/src/tests/require/require_test.cpp @@ -156,4 +156,19 @@ TEST(RequireTest, uncomment_to_manually_check_uncompilable_code) { //----------------------------------------------------------------------------- +TEST(RequireTest, explicit_require_failure) { + EXPECT_THROW( + { + try { REQUIRE_FAILED("this is my message"); } + catch(const E &e) { + fprintf(stderr, "e.getMessage() is >>>%s<<<\n", e.getMessage().c_str()); + fprintf(stderr, "e.getLocation() is >>>%s<<<\n", e.getLocation().c_str()); + fprintf(stderr, "e.what() is >>>%s<<<\n", e.what()); + throw; + } + }, E); +} + +//----------------------------------------------------------------------------- + GTEST_MAIN_RUN_ALL_TESTS() diff --git a/vespalib/src/vespa/vespalib/util/require.h b/vespalib/src/vespa/vespalib/util/require.h index a4283520314..1d2069aa226 100644 --- a/vespalib/src/vespa/vespalib/util/require.h +++ b/vespalib/src/vespa/vespalib/util/require.h @@ -131,4 +131,11 @@ void handle_require_eq_failure [[noreturn]] (const A& a, const B& b, const char VESPA_STRINGIZE(a) " == " VESPA_STRINGIZE(b), \ __FILE__, __LINE__) +/** + * Signal the failure of some requirement with a message. + * Can be used instead of abort() + **/ +#define REQUIRE_FAILED(msg) \ + vespalib::handle_require_failure(msg, __FILE__, __LINE__) + } // namespace |