aboutsummaryrefslogtreecommitdiffstats
path: root/test/diagnostic.c
diff options
context:
space:
mode:
authorGravatar Gediminas Jakutis <gediminas@varciai.lt> 2019-11-13 17:00:52 +0200
committerGravatar Gediminas Jakutis <gediminas@varciai.lt> 2019-11-13 17:00:52 +0200
commit75de7a18f7e61f904f89a5024531f80bcfa449d6 (patch)
tree2e02c523d5b289a4b9a66c6fc27da89d572f4d04 /test/diagnostic.c
parent34b7af9f889397caef88f2dbb00347434eae6695 (diff)
downloadlibrin-75de7a18f7e61f904f89a5024531f80bcfa449d6.tar.gz
librin-75de7a18f7e61f904f89a5024531f80bcfa449d6.tar.bz2
librin-75de7a18f7e61f904f89a5024531f80bcfa449d6.zip
test: add diagnostic format tests.
Signed-off-by: Gediminas Jakutis <gediminas@varciai.lt>
Diffstat (limited to 'test/diagnostic.c')
-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)