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