]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Fail any unit test that causes an unhandled LD_BUG or LOG_ERR
authorNick Mathewson <nickm@torproject.org>
Wed, 16 Jan 2019 20:47:33 +0000 (15:47 -0500)
committerNick Mathewson <nickm@torproject.org>
Wed, 16 Jan 2019 20:47:33 +0000 (15:47 -0500)
Closes ticket 28668.

changes/ticket28668 [new file with mode: 0644]
src/test/testing_common.c

diff --git a/changes/ticket28668 b/changes/ticket28668
new file mode 100644 (file)
index 0000000..6386e00
--- /dev/null
@@ -0,0 +1,3 @@
+  o Minor features (testing):
+    - Treat all unexpected ERR and BUG messages as test failures.
+      Closes ticket 28668.
index 60015f3c247c1efa3f8ef9d82b3077e5685abaa4..62d40a42fa9ec8902840a97d72a5dc567d8a3a68 100644 (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;