diff options
Diffstat (limited to 'test/diagnostic.c')
-rw-r--r-- | test/diagnostic.c | 33 |
1 files changed, 32 insertions, 1 deletions
diff --git a/test/diagnostic.c b/test/diagnostic.c index 5f85ea6..56a8a65 100644 --- a/test/diagnostic.c +++ b/test/diagnostic.c @@ -18,12 +18,15 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#define RIN_NEED_GETTID + #include <unistd.h> #include <stdint.h> #include <stdio.h> #include <string.h> #include "test.h" #include "rin/diagnostic.h" +#include "rin/compat.h" static int err_test(void); static int warn_test(void); @@ -114,7 +117,35 @@ static int info_test(void) static int format_test(void) { - return 77; + char expbuf[64]; + size_t i; + int ret; + + static const char *format[] = {NULL, "", "C:F:t:mn", "CCCC"}; + static const char *expected_err[] = {"error:format_test:\n", "", "error:format_test:%08lx:message is 3\n", "errorerrorerrorerror"}; + static const char *expected_warn[] = {"warning:format_test:\n", "", "warning:format_test:%08lx:message is 3\n", "warningwarningwarningwarning"}; + static const char *expected_fixme[] = {"fixme:format_test:\n", "", "fixme:format_test:%08lx:message is 3\n", "fixmefixmefixmefixme"}; + static const char *expected_info[] = {"info:format_test:\n", "", "info:format_test:%08lx:message is 3\n", "infoinfoinfoinfo"}; + static const char *msg[] = {"", "", "message is %zu"}; + + /* `ninja test` seems to be intercepting stdout, so we cannot test the default outstream */ + + for (i = 0; i < arrlen(format); ++i) { + rin_diag_format(rin_diag_err, format[i]); + rin_diag_format(rin_diag_warn, format[i]); + rin_diag_format(rin_diag_fixme, format[i]); + rin_diag_format(rin_diag_info, format[i]); + snprintf(expbuf, sizeof(expbuf), expected_err[i], (long int) gettid()); + ret = test_default_channels(msg[i], expbuf, i, __func__, rin_diag_err); + snprintf(expbuf, sizeof(expbuf), expected_warn[i], (long int) gettid()); + ret = test_default_channels(msg[i], expbuf, i, __func__, rin_diag_warn); + snprintf(expbuf, sizeof(expbuf), expected_fixme[i], (long int) gettid()); + ret = test_default_channels(msg[i], expbuf, i, __func__, rin_diag_fixme); + snprintf(expbuf, sizeof(expbuf), expected_info[i], (long int) gettid()); + ret = test_default_channels(msg[i], expbuf, i, __func__, rin_diag_info); + } + + return ret; } static char *visible_newlines(const char * const in) |