1 #include <cgreen/mocks.h>
2
3 /* syslog calls mocked via mock_vfprintf, so expect that too */
4
5 #if !defined(HAVE_SYSLOG) || !defined(HAVE_SYSLOG_H)
add_debug_syslog(TestSuite * suite)6 void add_debug_syslog(TestSuite *suite)
7 {
8 }
9 #else
10 static int exp_priority = LOG_DEBUG;
11
Ensure(debug_uses_printf_if_no_use_syslog)12 Ensure(debug_uses_printf_if_no_use_syslog)
13 {
14 never_expect(mock_syslog);
15 never_expect(mock_vsyslog);
16 never_expect(mock_openlog);
17
18 always_expect(mock_fprintf);
19 always_expect(mock_vfprintf);
20 always_expect(mock_fflush);
21
22 log_file("stderr");
23 debug(syslog_debug_level, normal_log_msg);
24 }
25
Ensure(debug_stub_no_debug_syslog)26 Ensure(debug_stub_no_debug_syslog) {
27 char *exp;
28
29 exp = create_no_debug_exp();
30
31 expect(mock_openlog);
32 always_expect(mock_vsyslog,
33 when(priority, is_equal_to(exp_priority)));
34 always_expect(mock_vfprintf,
35 when(stream, is_equal_to(NULL)),
36 when(res_str, is_equal_to_string(exp)));
37
38 log_file("syslog");
39 log_suppress_debug();
40 debug(syslog_debug_level, normal_log_msg);
41 debug(syslog_debug_level, normal_log_msg);
42
43 free(exp);
44 }
45
Ensure(debug_opens_syslog_first_time)46 Ensure(debug_opens_syslog_first_time)
47 {
48 expect(mock_openlog,
49 when(ident, is_equal_to_string(default_name)),
50 when(option, is_equal_to(LOG_PID)),
51 when(facility, is_equal_to(FACILITY)));
52 always_expect(mock_vsyslog);
53 always_expect(mock_vfprintf);
54
55 log_file("syslog");
56 debug(syslog_debug_level, normal_log_msg);
57 }
58
Ensure(debug_doesnot_open_syslog_after_debug)59 Ensure(debug_doesnot_open_syslog_after_debug)
60 {
61 expect(mock_openlog);
62 never_expect(mock_openlog);
63 always_expect(mock_vsyslog);
64 always_expect(mock_vfprintf);
65
66 log_file("syslog");
67 debug(syslog_debug_level, normal_log_msg);
68 debug(syslog_debug_level, normal_log_msg);
69 }
70
Ensure(debug_doesnot_open_syslog_after_fglog)71 Ensure(debug_doesnot_open_syslog_after_fglog)
72 {
73 expect(mock_openlog);
74 never_expect(mock_openlog);
75 always_expect(mock_vsyslog);
76 always_expect(mock_vfprintf);
77
78 log_file("syslog");
79 fglog(normal_log_msg);
80 debug(syslog_debug_level, normal_log_msg);
81 }
82
Ensure(debug_simple_output_syslog)83 Ensure(debug_simple_output_syslog)
84 {
85 expect(mock_openlog);
86 expect(mock_vsyslog,
87 when(priority, is_equal_to(LOG_DEBUG)));
88
89 expect(mock_vfprintf,
90 when(stream, is_equal_to(NULL)),
91 when(res_str, is_equal_to_string(normal_log_msg)));
92
93 log_file("syslog");
94 debug(syslog_debug_level, normal_log_msg);
95 }
96
add_debug_syslog(TestSuite * suite)97 void add_debug_syslog(TestSuite *suite)
98 {
99 add_test(suite, debug_uses_printf_if_no_use_syslog);
100 add_test(suite, debug_stub_no_debug_syslog);
101 add_test(suite, debug_opens_syslog_first_time);
102 add_test(suite, debug_doesnot_open_syslog_after_debug);
103 add_test(suite, debug_doesnot_open_syslog_after_fglog);
104 add_test(suite, debug_simple_output_syslog);
105 }
106
107 #endif /* HAVE_SYSLOG HAVE_SYSLOG_H */
108