# HG changeset patch # User Josef 'Jeff' Sipek # Date 1549852163 18000 # Node ID e5d8203935d2beaa4915f1af08440c77d3c69d29 # Parent 6ba753927d3f7923bb7065a4bf5b975f13c48f42 tests: add check_rets helper Signed-off-by: Josef 'Jeff' Sipek diff -r 6ba753927d3f -r e5d8203935d2 tests/test.c --- a/tests/test.c Sun Feb 10 21:45:35 2019 -0500 +++ b/tests/test.c Sun Feb 10 21:29:23 2019 -0500 @@ -56,6 +56,42 @@ exit(1); } +/* + * Compare two return values (0s or negated errnos), and fail if they don't + * match. + */ +void check_rets(int exp, int got, const char *fmt, ...) +{ + va_list ap; + + if (exp == got) + return; + + fprintf(stderr, "TEST FAILED: "); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + + fprintf(stderr, " "); + + if (got && !exp) + fprintf(stderr, "returned %s (%d), expected success", + xstrerror(got), got); + + if (got && exp) + fprintf(stderr, "returned %s (%d), expected %s (%d)", + xstrerror(got), got, xstrerror(exp), exp); + + if (!got && exp) + fprintf(stderr, "succeded, expected %s (%d)", + xstrerror(exp), exp); + + fprintf(stderr, "\n"); + + exit(1); +} + void test_set_panic_string(const char *str) { expected_panic_string = str;