aboutsummaryrefslogtreecommitdiffstats
path: root/t/unit-tests/test-lib.c
diff options
context:
space:
mode:
authorRené Scharfe <l.s.r@web.de>2024-07-30 16:07:00 +0200
committerJunio C Hamano <gitster@pobox.com>2024-07-30 13:32:43 -0700
commit1f452d6c6835e41d25e163616d8ee75aa91b5b17 (patch)
treec72df49319cbd8de494a8abe0c697a12837ecc0f /t/unit-tests/test-lib.c
parent4575ba6a7c579ab5ac46d929c7c5de20013938cf (diff)
downloadgit-1f452d6c6835e41d25e163616d8ee75aa91b5b17.tar.gz
unit-tests: show location of checks outside of tests
Checks outside of tests are caught at runtime and reported like this: Assertion failed: (ctx.running), function test_assert, file test-lib.c, line 267. The assert() call aborts the unit test and doesn't reveal the location or even the type of the offending check, as test_assert() is called by all of them. Handle it like the opposite case, a test without any checks: Don't abort, but report the location of the actual check, along with a message explaining the situation. The output for example above becomes: # BUG: check outside of test at t/helper/test-example-tap.c:75 ... and the unit test program continues and indicates the error in its exit code at the end. Signed-off-by: René Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/unit-tests/test-lib.c')
-rw-r--r--t/unit-tests/test-lib.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/t/unit-tests/test-lib.c b/t/unit-tests/test-lib.c
index 3c513ce59a..989dc758e6 100644
--- a/t/unit-tests/test-lib.c
+++ b/t/unit-tests/test-lib.c
@@ -264,7 +264,12 @@ static void test_todo(void)
int test_assert(const char *location, const char *check, int ok)
{
- assert(ctx.running);
+ if (!ctx.running) {
+ test_msg("BUG: check outside of test at %s",
+ make_relative(location));
+ ctx.failed = 1;
+ return 0;
+ }
if (ctx.result == RESULT_SKIP) {
test_msg("skipping check '%s' at %s", check,