Просмотр исходного кода

Capture the LOG_ERR messages in our tests that had logged errors.

(It's confusing for the test to write an expected error to stdout,
and then tell the user "OK".)
Nick Mathewson 10 лет назад
Родитель
Сommit
08cc0ef832
2 измененных файлов с 14 добавлено и 1 удалено
  1. 5 1
      src/test/test_address.c
  2. 9 0
      src/test/test_util.c

+ 5 - 1
src/test/test_address.c

@@ -26,6 +26,7 @@
 #include "or.h"
 #include "or.h"
 #include "address.h"
 #include "address.h"
 #include "test.h"
 #include "test.h"
+#include "log_test_helpers.h"
 
 
 /** Return 1 iff <b>sockaddr1</b> and <b>sockaddr2</b> represent
 /** Return 1 iff <b>sockaddr1</b> and <b>sockaddr2</b> represent
  * the same IP address and port combination. Otherwise, return 0.
  * the same IP address and port combination. Otherwise, return 0.
@@ -822,7 +823,10 @@ test_address_get_if_addrs6_list_no_internal(void *arg)
 
 
   (void)arg;
   (void)arg;
 
 
+  int prev_level = setup_capture_of_logs(LOG_ERR); /* We might drop a log_err */
   results = get_interface_address6_list(LOG_ERR, AF_INET6, 0);
   results = get_interface_address6_list(LOG_ERR, AF_INET6, 0);
+  tt_int_op(smartlist_len(mock_saved_logs()), OP_LE, 1);
+  teardown_capture_of_logs(prev_level);
 
 
   tt_assert(results != NULL);
   tt_assert(results != NULL);
   /* Work even on systems without IPv6 interfaces */
   /* Work even on systems without IPv6 interfaces */
@@ -1110,7 +1114,7 @@ struct testcase_t address_tests[] = {
   ADDRESS_TEST(get_if_addrs_list_internal, 0),
   ADDRESS_TEST(get_if_addrs_list_internal, 0),
   ADDRESS_TEST(get_if_addrs_list_no_internal, 0),
   ADDRESS_TEST(get_if_addrs_list_no_internal, 0),
   ADDRESS_TEST(get_if_addrs6_list_internal, 0),
   ADDRESS_TEST(get_if_addrs6_list_internal, 0),
-  ADDRESS_TEST(get_if_addrs6_list_no_internal, 0),
+  ADDRESS_TEST(get_if_addrs6_list_no_internal, TT_FORK),
   ADDRESS_TEST(get_if_addrs_internal_fail, 0),
   ADDRESS_TEST(get_if_addrs_internal_fail, 0),
   ADDRESS_TEST(get_if_addrs_no_internal_fail, 0),
   ADDRESS_TEST(get_if_addrs_no_internal_fail, 0),
   ADDRESS_TEST(get_if_addrs, 0),
   ADDRESS_TEST(get_if_addrs, 0),

+ 9 - 0
src/test/test_util.c

@@ -13,6 +13,7 @@
 #include "test.h"
 #include "test.h"
 #include "memarea.h"
 #include "memarea.h"
 #include "util_process.h"
 #include "util_process.h"
+#include "log_test_helpers.h"
 
 
 #ifdef HAVE_PWD_H
 #ifdef HAVE_PWD_H
 #include <pwd.h>
 #include <pwd.h>
@@ -5187,6 +5188,7 @@ test_util_pwdb(void *arg)
   const struct passwd *me = NULL, *me2, *me3;
   const struct passwd *me = NULL, *me2, *me3;
   char *name = NULL;
   char *name = NULL;
   char *dir = NULL;
   char *dir = NULL;
+  int prev_level = -100;
 
 
   /* Uncached case. */
   /* Uncached case. */
   /* Let's assume that we exist. */
   /* Let's assume that we exist. */
@@ -5225,8 +5227,13 @@ test_util_pwdb(void *arg)
   }
   }
   tt_assert(found);
   tt_assert(found);
   tor_free(dir);
   tor_free(dir);
+
+  prev_level = setup_capture_of_logs(LOG_ERR); /* We should do a LOG_ERR */
   dir = get_user_homedir(badname);
   dir = get_user_homedir(badname);
   tt_assert(dir == NULL);
   tt_assert(dir == NULL);
+  tt_int_op(smartlist_len(mock_saved_logs()), OP_EQ, 1);
+  teardown_capture_of_logs(prev_level);
+  prev_level = -100;
 
 
   /* Now try to find a user that doesn't exist by ID. */
   /* Now try to find a user that doesn't exist by ID. */
   found = 0;
   found = 0;
@@ -5243,6 +5250,8 @@ test_util_pwdb(void *arg)
  done:
  done:
   tor_free(name);
   tor_free(name);
   tor_free(dir);
   tor_free(dir);
+  if (prev_level >= 0)
+    teardown_capture_of_logs(prev_level);
 }
 }
 #endif
 #endif