aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/diagnostic.c33
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)