Commit f684cd80 authored by Nick Mathewson's avatar Nick Mathewson 🦀
Browse files

Fail any unit test that causes an unhandled LD_BUG or LOG_ERR

Closes ticket 28668.
parent f0408b84
Loading
Loading
Loading
Loading

changes/ticket28668

0 → 100644
+3 −0
Original line number Diff line number Diff line
  o Minor features (testing):
    - Treat all unexpected ERR and BUG messages as test failures.
      Closes ticket 28668.
+18 −0
Original line number Diff line number Diff line
@@ -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;