2
0
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:
JINMEI Tatuya
2012-05-08 15:57:11 -07:00
parent 25f0bb96dd
commit 18675a2d6a
2 changed files with 11 additions and 6 deletions

View File

@@ -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 */

View File

@@ -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 */