Fail any unit test that causes an unhandled LD_BUG or LOG_ERR

Closes ticket 28668.
This commit is contained in:
Nick Mathewson 2019-01-16 15:47:33 -05:00
parent f0408b844f
commit f684cd8005
2 changed files with 21 additions and 0 deletions

3
changes/ticket28668 Normal file
View File

@ -0,0 +1,3 @@
o Minor features (testing):
- Treat all unexpected ERR and BUG messages as test failures.
Closes ticket 28668.

View File

@ -239,6 +239,15 @@ tinytest_postfork(void)
init_pregenerated_keys();
}
static void
log_callback_failure(int severity, uint32_t domain, const char *msg)
{
(void)msg;
if (severity == LOG_ERR || (domain & LD_BUG)) {
tinytest_set_test_failed_();
}
}
/** Main entry point for unit test code: parse the command line, and run
* some unit tests. */
int
@ -287,6 +296,7 @@ main(int c, const char **v)
c = i_out;
{
/* setup logs to stdout */
log_severity_list_t s;
memset(&s, 0, sizeof(s));
set_log_severity_config(loglevel, LOG_ERR, &s);
@ -294,6 +304,14 @@ main(int c, const char **v)
s.masks[LOG_WARN-LOG_ERR] |= LD_BUG;
add_stream_log(&s, "", fileno(stdout));
}
{
/* Setup logs that cause failure. */
log_severity_list_t s;
memset(&s, 0, sizeof(s));
set_log_severity_config(LOG_ERR, LOG_ERR, &s);
s.masks[LOG_WARN-LOG_ERR] |= LD_BUG;
add_callback_log(&s, log_callback_failure);
}
init_protocol_warning_severity_level();
options->command = CMD_RUN_UNITTESTS;