Mercurial > irccd
annotate tests/test-log.c @ 1123:6457999bfb7a
lib: irc_bot_post use a linked list instead
Using a pipe isn't a good idea since it's a byte stream in which every
invocation can arrive partially.
The additional threads now interrupts poll(2) using SIGUSR1.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sun, 28 Nov 2021 11:19:18 +0100 |
parents | f365e5be1261 |
children | f06e9761cc90 |
rev | line source |
---|---|
936 | 1 /* |
2 * test-log.c -- test log.h functions | |
3 * | |
4 * Copyright (c) 2013-2021 David Demelier <markand@malikania.fr> | |
5 * | |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #define GREATEST_USE_ABBREVS 0 | |
20 #include <greatest.h> | |
21 | |
22 #include <irccd/log.h> | |
23 | |
24 /* | |
25 * Note: we can't really test logs to console and syslog, so use files as best effort. Write some | |
26 * data and check that it is correctly written. | |
27 */ | |
28 | |
29 static void | |
30 clean(void *udata) | |
31 { | |
32 (void)udata; | |
33 | |
34 remove("stdout.txt"); | |
35 remove("stderr.txt"); | |
36 } | |
37 | |
38 GREATEST_TEST | |
39 basics_info_verbose_off(void) | |
40 { | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
41 FILE *fpout; |
936 | 42 char out[128] = {0}, err[128] = {0}; |
43 | |
44 /* Default is quiet, should not log. */ | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
45 irc_log_to_file("stdout.txt"); |
936 | 46 irc_log_info("hello world!"); |
47 | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
48 if (!(fpout = fopen("stdout.txt", "r"))) |
936 | 49 GREATEST_FAIL(); |
50 | |
51 fgets(out, sizeof (out), fpout); | |
52 | |
53 GREATEST_ASSERT_STR_EQ("", out); | |
54 GREATEST_ASSERT_STR_EQ("", err); | |
55 | |
56 GREATEST_PASS(); | |
57 } | |
58 | |
59 GREATEST_TEST | |
60 basics_info_verbose_on(void) | |
61 { | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
62 FILE *fpout; |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
63 char out[128] = {0}; |
936 | 64 |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
65 irc_log_set_verbose(1); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
66 irc_log_to_file("stdout.txt"); |
936 | 67 irc_log_info("hello world!"); |
68 irc_log_info("what's up?"); | |
69 | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
70 if (!(fpout = fopen("stdout.txt", "r"))) |
936 | 71 GREATEST_FAIL(); |
72 | |
73 GREATEST_ASSERT(fgets(out, sizeof (out), fpout)); | |
74 GREATEST_ASSERT_STR_EQ("hello world!\n", out); | |
75 GREATEST_ASSERT(fgets(out, sizeof (out), fpout)); | |
76 GREATEST_ASSERT_STR_EQ("what's up?\n", out); | |
77 | |
78 | |
79 GREATEST_PASS(); | |
80 } | |
81 | |
82 GREATEST_TEST | |
83 basics_warn(void) | |
84 { | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
85 FILE *fpout; |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
86 char out[128] = {0}; |
936 | 87 |
88 /* Warning messages are printed even without verbosity. */ | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
89 irc_log_set_verbose(0); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
90 irc_log_to_file("stdout.txt"); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
91 irc_log_info("this is not printed"); |
936 | 92 irc_log_warn("error line 1"); |
93 irc_log_warn("error line 2"); | |
94 | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
95 if (!(fpout = fopen("stdout.txt", "r"))) |
936 | 96 GREATEST_FAIL(); |
97 | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
98 GREATEST_ASSERT(fgets(out, sizeof (out), fpout)); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
99 GREATEST_ASSERT_STR_EQ("error line 1\n", out); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
100 GREATEST_ASSERT(fgets(out, sizeof (out), fpout)); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
101 GREATEST_ASSERT_STR_EQ("error line 2\n", out); |
936 | 102 |
103 GREATEST_PASS(); | |
104 } | |
105 | |
106 GREATEST_TEST | |
107 basics_debug(void) | |
108 { | |
109 #if !defined(NDEBUG) | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
110 FILE *fpout; |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
111 char out[128] = {0}; |
936 | 112 |
113 /* Debug messages are printed even without verbosity but requires to be built in debug. */ | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
114 irc_log_set_verbose(0); |
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
115 irc_log_to_file("stdout.txt"); |
936 | 116 irc_log_debug("startup!"); |
117 irc_log_debug("shutdown!"); | |
118 | |
971
f365e5be1261
misc: remove more stdbool
David Demelier <markand@malikania.fr>
parents:
936
diff
changeset
|
119 if (!(fpout = fopen("stdout.txt", "r"))) |
936 | 120 GREATEST_FAIL(); |
121 | |
122 GREATEST_ASSERT(fgets(out, sizeof (out), fpout)); | |
123 GREATEST_ASSERT_STR_EQ("startup!\n", out); | |
124 GREATEST_ASSERT(fgets(out, sizeof (out), fpout)); | |
125 GREATEST_ASSERT_STR_EQ("shutdown!\n", out); | |
126 #endif | |
127 GREATEST_PASS(); | |
128 } | |
129 | |
130 GREATEST_SUITE(suite_basics) | |
131 { | |
132 GREATEST_SET_SETUP_CB(clean, NULL); | |
133 GREATEST_SET_TEARDOWN_CB(clean, NULL); | |
134 GREATEST_RUN_TEST(basics_info_verbose_off); | |
135 GREATEST_RUN_TEST(basics_info_verbose_on); | |
136 GREATEST_RUN_TEST(basics_warn); | |
137 GREATEST_RUN_TEST(basics_debug); | |
138 } | |
139 | |
140 GREATEST_MAIN_DEFS(); | |
141 | |
142 int | |
143 main(int argc, char **argv) | |
144 { | |
145 GREATEST_MAIN_BEGIN(); | |
146 GREATEST_RUN_SUITE(suite_basics); | |
147 GREATEST_MAIN_END(); | |
148 | |
149 return 0; | |
150 } |