ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
tests/logging.h
Go to the documentation of this file.
1#ifndef LOGGING_H
2#define LOGGING_H
3
57#include <stdbool.h>
58
75int test_logging_disable(bool disable_stdout, bool disable_stderr);
76
89int test_logging_restore(void);
90
100bool test_logging_is_disabled(void);
101
102// ============================================================================
103// Convenience Macros for Test Suites
104// ============================================================================
105
119#define TEST_LOGGING_SETUP_AND_TEARDOWN() \
120 void setup_quiet_test_logging(void) { \
121 test_logging_disable(true, true); \
122 } \
123 void restore_test_logging(void) { \
124 test_logging_restore(); \
125 }
126
140#define TEST_LOGGING_SETUP_AND_TEARDOWN_WITH_LOG_LEVELS(setup_level, restore_level, disable_stdout, disable_stderr) \
141 void setup_quiet_test_logging(void) { \
142 log_set_level(setup_level); \
143 test_logging_disable(disable_stdout, disable_stderr); \
144 } \
145 void restore_test_logging(void) { \
146 log_set_level(restore_level); \
147 test_logging_restore(); \
148 }
149
163#define TEST_LOGGING_SETUP_AND_TEARDOWN_WITH_LOG_LEVEL() \
164 TEST_LOGGING_SETUP_AND_TEARDOWN_WITH_LOG_LEVELS(LOG_FATAL, LOG_DEBUG, true, true)
165
178#define TEST_SUITE_WITH_QUIET_LOGGING_AND_LOG_LEVELS(suite_name, setup_level, restore_level, disable_stdout, \
179 disable_stderr, ...) \
180 void setup_quiet_test_logging_##suite_name(void) { \
181 log_set_level(setup_level); \
182 test_logging_disable(disable_stdout, disable_stderr); \
183 } \
184 void restore_test_logging_##suite_name(void) { \
185 log_set_level(restore_level); \
186 test_logging_restore(); \
187 } \
188 TestSuite(suite_name, .init = setup_quiet_test_logging_##suite_name, .fini = restore_test_logging_##suite_name, \
189 ##__VA_ARGS__);
190
204#define TEST_SUITE_WITH_QUIET_LOGGING(suite_name, ...) \
205 void setup_quiet_test_logging_##suite_name(void) { \
206 test_logging_disable(true, true); \
207 } \
208 void restore_test_logging_##suite_name(void) { \
209 test_logging_restore(); \
210 } \
211 TestSuite(suite_name, .init = setup_quiet_test_logging_##suite_name, .fini = restore_test_logging_##suite_name, \
212 ##__VA_ARGS__);
213
226#define TEST_SUITE_WITH_QUIET_LOGGING_AND_LOG_LEVEL(suite_name, ...) \
227 void setup_quiet_test_logging_##suite_name(void) { \
228 log_set_level(LOG_FATAL); \
229 test_logging_disable(true, true); \
230 } \
231 void restore_test_logging_##suite_name(void) { \
232 log_set_level(LOG_DEBUG); \
233 test_logging_restore(); \
234 } \
235 TestSuite(suite_name, .init = setup_quiet_test_logging_##suite_name, .fini = restore_test_logging_##suite_name, \
236 ##__VA_ARGS__);
237
252#define TEST_LOGGING_TEMPORARILY_DISABLE() \
253 bool _logging_was_disabled = test_logging_is_disabled(); \
254 if (!_logging_was_disabled) { \
255 test_logging_disable(true, true); \
256 } \
257 /* Note: Restoration happens automatically when test ends */
258
273#define TEST_LOGGING_TEMPORARILY_DISABLE_STDOUT() \
274 bool _logging_was_disabled = test_logging_is_disabled(); \
275 if (!_logging_was_disabled) { \
276 test_logging_disable(true, false); \
277 }
278
293#define TEST_LOGGING_TEMPORARILY_DISABLE_STDERR() \
294 bool _logging_was_disabled = test_logging_is_disabled(); \
295 if (!_logging_was_disabled) { \
296 test_logging_disable(false, true); \
297 }
298
311#define TEST_SUITE_WITH_DEBUG_LOGGING(suite_name, ...) \
312 TEST_SUITE_WITH_QUIET_LOGGING_AND_LOG_LEVELS(suite_name, LOG_DEBUG, LOG_DEBUG, false, false, ##__VA_ARGS__)
313
325#define TEST_SUITE_WITH_VERBOSE_LOGGING(suite_name, ...) TEST_SUITE_WITH_DEBUG_LOGGING(suite_name, ##__VA_ARGS__)
326
329#endif // LOGGING_H
int test_logging_disable(bool disable_stdout, bool disable_stderr)
Disable stdout/stderr output for quiet test execution.
int test_logging_restore(void)
Restore stdout/stderr output after test logging disable.
bool test_logging_is_disabled(void)
Check if logging is currently disabled.