From: Baofeng Wang Date: Tue, 7 Jun 2016 13:01:03 +0000 (+0300) Subject: lib-test: add test_assert_failed_strcmp to expose strings. X-Git-Tag: 2.3.0.rc1~3456 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3c16f16e005a5d863faad157dba4a82ecb170239;p=thirdparty%2Fdovecot%2Fcore.git lib-test: add test_assert_failed_strcmp to expose strings. the macro is used to facilitate any test to show string comparision contents when they doesn't match. --- diff --git a/src/lib-test/test-common.c b/src/lib-test/test-common.c index 04e61197ac..270e0effff 100644 --- a/src/lib-test/test-common.c +++ b/src/lib-test/test-common.c @@ -179,6 +179,15 @@ void test_assert_failed_idx(const char *code, const char *file, unsigned int lin test_success = FALSE; } +void test_assert_failed_strcmp(const char *code, const char *file, unsigned int line, + const char * src, const char * dst) +{ + printf("%s: Assert(#%u) failed: %s\n", file, line, code); + printf(" \"%s\" != \"%s\"\n", src, dst); + fflush(stdout); + test_success = FALSE; +} + static void test_dump_rand_state(void) { diff --git a/src/lib-test/test-common.h b/src/lib-test/test-common.h index cbb0210073..fc62afb52d 100644 --- a/src/lib-test/test-common.h +++ b/src/lib-test/test-common.h @@ -17,8 +17,17 @@ void test_begin(const char *name); #define test_assert_idx(code, i) STMT_START { \ if (!(code)) test_assert_failed_idx(#code, __FILE__, __LINE__, i); \ } STMT_END +/* Additional parameters are s1 (source) and s2 (destination) string + * in strcmp(). + */ +#define test_assert_strcmp(s1, s2) STMT_START { \ + if ((strcmp(s1,s2) != 0)) test_assert_failed_strcmp("strcmp(" #s1 "," #s2 ")", __FILE__, __LINE__, s1, s2); \ + } STMT_END + void test_assert_failed(const char *code, const char *file, unsigned int line); void test_assert_failed_idx(const char *code, const char *file, unsigned int line, long long i); +void test_assert_failed_strcmp(const char *code, const char *file, unsigned int line, + const char * src, const char * dst); bool test_has_failed(void); /* If you're testing nasty cases which you want to warn, surround the noisy op with these */ void test_expect_errors(unsigned int expected);