Print the failed assertion before aborting in test cases

This makes it faster and easier to debug, so that you don't need to fire
up a debugger just to see which assertion triggered in a failing test.
This commit is contained in:
Kevin Svetlitski 2023-07-10 14:25:53 -07:00 committed by Qi Wang
parent 65d3b5989b
commit 314c073a38
2 changed files with 11 additions and 32 deletions

View File

@ -13,11 +13,7 @@
__func__, __FILE__, __LINE__, \ __func__, __FILE__, __LINE__, \
#a, #b, a_, b_); \ #a, #b, a_, b_); \
malloc_snprintf(message, sizeof(message), __VA_ARGS__); \ malloc_snprintf(message, sizeof(message), __VA_ARGS__); \
if (may_abort) { \ p_test_fail(may_abort, prefix, message); \
abort(); \
} else { \
p_test_fail(prefix, message); \
} \
} \ } \
} while (0) } while (0)
@ -230,11 +226,7 @@
#a, #b, a_ ? "true" : "false", \ #a, #b, a_ ? "true" : "false", \
b_ ? "true" : "false"); \ b_ ? "true" : "false"); \
malloc_snprintf(message, sizeof(message), __VA_ARGS__); \ malloc_snprintf(message, sizeof(message), __VA_ARGS__); \
if (may_abort) { \ p_test_fail(may_abort, prefix, message); \
abort(); \
} else { \
p_test_fail(prefix, message); \
} \
} \ } \
} while (0) } while (0)
@ -251,11 +243,7 @@
#a, #b, a_ ? "true" : "false", \ #a, #b, a_ ? "true" : "false", \
b_ ? "true" : "false"); \ b_ ? "true" : "false"); \
malloc_snprintf(message, sizeof(message), __VA_ARGS__); \ malloc_snprintf(message, sizeof(message), __VA_ARGS__); \
if (may_abort) { \ p_test_fail(may_abort, prefix, message); \
abort(); \
} else { \
p_test_fail(prefix, message); \
} \
} \ } \
} while (0) } while (0)
@ -275,11 +263,7 @@
"\"%s\" differs from \"%s\": ", \ "\"%s\" differs from \"%s\": ", \
__func__, __FILE__, __LINE__, #a, #b, a, b); \ __func__, __FILE__, __LINE__, #a, #b, a, b); \
malloc_snprintf(message, sizeof(message), __VA_ARGS__); \ malloc_snprintf(message, sizeof(message), __VA_ARGS__); \
if (may_abort) { \ p_test_fail(may_abort, prefix, message); \
abort(); \
} else { \
p_test_fail(prefix, message); \
} \
} \ } \
} while (0) } while (0)
@ -293,11 +277,7 @@
"\"%s\" same as \"%s\": ", \ "\"%s\" same as \"%s\": ", \
__func__, __FILE__, __LINE__, #a, #b, a, b); \ __func__, __FILE__, __LINE__, #a, #b, a, b); \
malloc_snprintf(message, sizeof(message), __VA_ARGS__); \ malloc_snprintf(message, sizeof(message), __VA_ARGS__); \
if (may_abort) { \ p_test_fail(may_abort, prefix, message); \
abort(); \
} else { \
p_test_fail(prefix, message); \
} \
} \ } \
} while (0) } while (0)
@ -311,11 +291,7 @@
"%s:%s:%d: Unreachable code reached: ", \ "%s:%s:%d: Unreachable code reached: ", \
__func__, __FILE__, __LINE__); \ __func__, __FILE__, __LINE__); \
malloc_snprintf(message, sizeof(message), __VA_ARGS__); \ malloc_snprintf(message, sizeof(message), __VA_ARGS__); \
if (may_abort) { \ p_test_fail(may_abort, prefix, message); \
abort(); \
} else { \
p_test_fail(prefix, message); \
} \
} while (0) } while (0)
#define expect_not_reached(...) verify_not_reached(false, __VA_ARGS__) #define expect_not_reached(...) verify_not_reached(false, __VA_ARGS__)
@ -580,4 +556,4 @@ test_status_t p_test_no_reentrancy(test_t *t, ...);
test_status_t p_test_no_malloc_init(test_t *t, ...); test_status_t p_test_no_malloc_init(test_t *t, ...);
void p_test_init(const char *name); void p_test_init(const char *name);
void p_test_fini(void); void p_test_fini(void);
void p_test_fail(const char *prefix, const char *message); void p_test_fail(bool may_abort, const char *prefix, const char *message);

View File

@ -228,7 +228,10 @@ p_test_no_malloc_init(test_t *t, ...) {
} }
void void
p_test_fail(const char *prefix, const char *message) { p_test_fail(bool may_abort, const char *prefix, const char *message) {
malloc_cprintf(NULL, NULL, "%s%s\n", prefix, message); malloc_cprintf(NULL, NULL, "%s%s\n", prefix, message);
test_status = test_status_fail; test_status = test_status_fail;
if (may_abort) {
abort();
}
} }