mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 05:55:28 +00:00
[1964] use assert() instead of throwing exception in checkExcessPlaceholders.
unfortunatelly, we cannot throw here because it's called from the Formatter destructor. death tests now work for environments where it previously failed.
This commit is contained in:
@@ -15,6 +15,8 @@
|
||||
#include "config.h"
|
||||
#include <log/log_formatter.h>
|
||||
|
||||
#include <cassert>
|
||||
|
||||
using namespace std;
|
||||
using namespace boost;
|
||||
|
||||
@@ -52,11 +54,12 @@ checkExcessPlaceholders(string* message, unsigned int placeholder) {
|
||||
const string mark("%" + lexical_cast<string>(placeholder));
|
||||
const size_t pos(message->find(mark));
|
||||
if (pos != string::npos) {
|
||||
// Excess placeholders were found. If we enable the harsh check,
|
||||
// abort it. Note: ideally we'd like to throw MismatchedPlaceholders,
|
||||
// but we can't at least for now because this function is called from
|
||||
// the Formatter's destructor.
|
||||
#ifdef ENABLE_LOGGER_CHECKS
|
||||
// Excess placeholders were found, so throw an exception
|
||||
isc_throw(MismatchedPlaceholders,
|
||||
"Excess logger placeholders still exist in message: "
|
||||
<< *message);
|
||||
assert("Excess logger placeholders still exist in message" == NULL);
|
||||
#else
|
||||
message->append(" @@Excess logger placeholders still exist@@");
|
||||
#endif /* ENABLE_LOGGER_CHECKS */
|
||||
|
@@ -106,12 +106,14 @@ TEST_F(FormatterTest, multiArg) {
|
||||
TEST_F(FormatterTest, mismatchedPlaceholders) {
|
||||
EXPECT_DEATH({
|
||||
isc::util::unittests::dontCreateCoreDumps();
|
||||
Formatter(isc::log::INFO, s("Missing the first %2"), this).arg("missing").arg("argument");
|
||||
Formatter(isc::log::INFO, s("Missing the first %2"), this).
|
||||
arg("missing").arg("argument");
|
||||
}, ".*");
|
||||
|
||||
EXPECT_DEATH({
|
||||
isc::util::unittests::dontCreateCoreDumps();
|
||||
Formatter(isc::log::INFO, s("Too many arguments in %1 %2"), this).arg("only one");
|
||||
Formatter(isc::log::INFO, s("Too many arguments in %1 %2"), this).
|
||||
arg("only one");
|
||||
}, ".*");
|
||||
}
|
||||
#endif /* EXPECT_DEATH */
|
||||
|
Reference in New Issue
Block a user