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_fglog_syslog(TestSuite * suite)6 void add_fglog_syslog(TestSuite *suite)
7 {
8 }
9 #else
10
Ensure(fglog_uses_printf_if_no_use_syslog)11 Ensure(fglog_uses_printf_if_no_use_syslog)
12 {
13 never_expect(mock_syslog);
14 never_expect(mock_vsyslog);
15 never_expect(mock_openlog);
16
17 always_expect(mock_fprintf);
18 always_expect(mock_vfprintf);
19 always_expect(mock_fclose);
20
21 log_file("stderr");
22 fglog(normal_log_msg);
23 }
24
Ensure(fglog_opens_syslog_first_time)25 Ensure(fglog_opens_syslog_first_time)
26 {
27 expect(mock_openlog,
28 when(ident, is_equal_to_string(default_name)),
29 when(option, is_equal_to(LOG_PID)),
30 when(facility, is_equal_to(FACILITY)));
31 always_expect(mock_vsyslog);
32 always_expect(mock_vfprintf);
33
34 log_file("syslog");
35 fglog(normal_log_msg);
36 }
37
Ensure(fglog_doesnot_open_syslog_after_debug)38 Ensure(fglog_doesnot_open_syslog_after_debug)
39 {
40 expect(mock_openlog);
41 never_expect(mock_openlog);
42 always_expect(mock_vsyslog);
43 always_expect(mock_vfprintf);
44
45 log_file("syslog");
46 debug(syslog_debug_level, normal_log_msg);
47 fglog(normal_log_msg);
48 }
49
Ensure(fglog_doesnot_open_syslog_after_fglog)50 Ensure(fglog_doesnot_open_syslog_after_fglog)
51 {
52 expect(mock_openlog);
53 never_expect(mock_openlog);
54 always_expect(mock_vsyslog);
55 always_expect(mock_vfprintf);
56
57 log_file("syslog");
58 fglog(normal_log_msg);
59 fglog(normal_log_msg);
60 }
61
Ensure(fglog_simple_output_syslog)62 Ensure(fglog_simple_output_syslog)
63 {
64 expect(mock_openlog);
65 expect(mock_vsyslog,
66 when(priority, is_equal_to(LOG_NOTICE)));
67
68 expect(mock_vfprintf,
69 when(stream, is_equal_to(NULL)),
70 when(res_str, is_equal_to_string(normal_log_msg)));
71
72 log_file("syslog");
73 fglog(normal_log_msg);
74 }
75
Ensure(fglog_errno_output_syslog)76 Ensure(fglog_errno_output_syslog)
77 {
78 char *exp;
79
80 expect(mock_openlog);
81 expect(mock_vsyslog,
82 when(priority, is_equal_to(LOG_NOTICE)));
83
84 expect(mock_vfprintf,
85 when(stream, is_equal_to(NULL)),
86 when(res_str, is_equal_to_string(errno_log_msg + 1)));
87
88 exp = create_string("(errno=%d: %m)", errno);
89 expect(mock_syslog,
90 when(priority, is_equal_to(LOG_NOTICE)));
91 expect(mock_vfprintf,
92 when(stream, is_equal_to(NULL)),
93 when(res_str, is_equal_to_string(exp)));
94
95 log_file("syslog");
96 fglog(errno_log_msg);
97
98 free(exp);
99 }
100
Ensure(fglog_outputs_after_log_file_syslog)101 Ensure(fglog_outputs_after_log_file_syslog)
102 {
103 expect(mock_openlog,
104 when(ident, is_equal_to_string(default_name)));
105 expect(mock_vsyslog,
106 when(priority, is_equal_to(LOG_NOTICE)));
107
108 expect(mock_vfprintf,
109 when(stream, is_equal_to(NULL)),
110 when(res_str, is_equal_to_string(normal_log_msg)));
111
112 log_file("syslog");
113 fglog(normal_log_msg);
114 }
115
Ensure(fglog_outputs_after_log_program_log_file_syslog)116 Ensure(fglog_outputs_after_log_program_log_file_syslog)
117 {
118 expect(mock_openlog,
119 when(ident, is_equal_to_string(custom_name)));
120 expect(mock_vsyslog,
121 when(priority, is_equal_to(LOG_NOTICE)));
122
123 expect(mock_vfprintf,
124 when(stream, is_equal_to(NULL)),
125 when(res_str, is_equal_to_string(normal_log_msg)));
126
127 log_program(custom_name);
128 log_file("syslog");
129 fglog(normal_log_msg);
130 }
131
Ensure(fglog_outputs_after_log_file_syslog_log_program)132 Ensure(fglog_outputs_after_log_file_syslog_log_program)
133 {
134 expect(mock_openlog,
135 when(ident, is_equal_to_string(default_name)));
136 expect(mock_openlog,
137 when(ident, is_equal_to_string(custom_name)));
138 expect(mock_vsyslog,
139 when(priority, is_equal_to(LOG_NOTICE)));
140
141 expect(mock_vfprintf,
142 when(stream, is_equal_to(NULL)),
143 when(res_str, is_equal_to_string(normal_log_msg)));
144
145 log_file("syslog");
146 log_program(custom_name);
147 fglog(normal_log_msg);
148 }
149
add_fglog_syslog(TestSuite * suite)150 void add_fglog_syslog(TestSuite *suite)
151 {
152 add_test(suite, fglog_uses_printf_if_no_use_syslog);
153 add_test(suite, fglog_opens_syslog_first_time);
154 add_test(suite, fglog_doesnot_open_syslog_after_debug);
155 add_test(suite, fglog_doesnot_open_syslog_after_fglog);
156 add_test(suite, fglog_simple_output_syslog);
157 add_test(suite, fglog_errno_output_syslog);
158 add_test(suite, fglog_outputs_after_log_file_syslog);
159 add_test(suite, fglog_outputs_after_log_program_log_file_syslog);
160 add_test(suite, fglog_outputs_after_log_file_syslog_log_program);
161 }
162
163 #endif /* HAVE_SYSLOG HAVE_SYSLOG_H */
164