1 /* Copyright (c) 2010-2015, The Tor Project, Inc. */
2 /* See LICENSE for licensing information */
4 #define UTIL_PROCESS_PRIVATE
10 #include "util_process.h"
12 #include "log_test_helpers.h"
15 #define NS_MODULE util_process
18 temp_callback(int r
, void *s
)
25 test_util_process_set_waitpid_callback(void *ignored
)
28 waitpid_callback_t
*res1
= NULL
, *res2
= NULL
;
29 int previous_log
= setup_capture_of_logs(LOG_WARN
);
30 pid_t pid
= (pid_t
)42;
32 res1
= set_waitpid_callback(pid
, temp_callback
, NULL
);
35 res2
= set_waitpid_callback(pid
, temp_callback
, NULL
);
37 tt_str_op(mock_saved_log_at(0), OP_EQ
,
38 "Replaced a waitpid monitor on pid 42. That should be "
42 teardown_capture_of_logs(previous_log
);
43 clear_waitpid_callback(res1
);
44 clear_waitpid_callback(res2
);
48 test_util_process_clear_waitpid_callback(void *ignored
)
51 waitpid_callback_t
*res
;
52 int previous_log
= setup_capture_of_logs(LOG_WARN
);
53 pid_t pid
= (pid_t
)43;
55 clear_waitpid_callback(NULL
);
57 res
= set_waitpid_callback(pid
, temp_callback
, NULL
);
58 clear_waitpid_callback(res
);
59 tt_int_op(mock_saved_log_number(), OP_EQ
, 0);
62 /* No. This is use-after-free. We don't _do_ that. XXXX */
63 clear_waitpid_callback(res
);
64 tt_str_op(mock_saved_log_at(0), OP_EQ
,
65 "Couldn't remove waitpid monitor for pid 43.\n");
69 teardown_capture_of_logs(previous_log
);
74 #define TEST(name) { #name, test_util_process_##name, 0, NULL, NULL }
76 #define TEST(name) { #name, NULL, TT_SKIP, NULL, NULL }
79 struct testcase_t util_process_tests
[] = {
80 TEST(set_waitpid_callback
),
81 TEST(clear_waitpid_callback
),