Merge branch 'jt/trace2-BUG'
Even though invocations of "die()" were logged to the trace2 system, "BUG()"s were not, which has been corrected. * jt/trace2-BUG: usage: trace2 BUG() invocations
This commit is contained in:
commit
aa2d3dbdf5
@ -198,6 +198,14 @@ static int ut_006data(int argc, const char **argv)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ut_007bug(int argc, const char **argv)
|
||||
{
|
||||
/*
|
||||
* Exercise BUG() to ensure that the message is printed to trace2.
|
||||
*/
|
||||
BUG("the bug message");
|
||||
}
|
||||
|
||||
/*
|
||||
* Usage:
|
||||
* test-tool trace2 <ut_name_1> <ut_usage_1>
|
||||
@ -214,6 +222,7 @@ static struct unit_test ut_table[] = {
|
||||
{ ut_004child, "004child", "[<child_command_line>]" },
|
||||
{ ut_005exec, "005exec", "<git_command_args>" },
|
||||
{ ut_006data, "006data", "[<category> <key> <value>]+" },
|
||||
{ ut_007bug, "007bug", "" },
|
||||
};
|
||||
/* clang-format on */
|
||||
|
||||
|
@ -147,6 +147,25 @@ test_expect_success 'normal stream, error event' '
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
# Verb 007bug
|
||||
#
|
||||
# Check that BUG writes to trace2
|
||||
|
||||
test_expect_success 'BUG messages are written to trace2' '
|
||||
test_when_finished "rm trace.normal actual expect" &&
|
||||
test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 007bug &&
|
||||
perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
|
||||
cat >expect <<-EOF &&
|
||||
version $V
|
||||
start _EXE_ trace2 007bug
|
||||
cmd_name trace2 (trace2)
|
||||
error the bug message
|
||||
exit elapsed:_TIME_ code:99
|
||||
atexit elapsed:_TIME_ code:99
|
||||
EOF
|
||||
test_cmp expect actual
|
||||
'
|
||||
|
||||
sane_unset GIT_TRACE2_BRIEF
|
||||
|
||||
# Now test without environment variables and get all Trace2 settings
|
||||
|
11
usage.c
11
usage.c
@ -266,6 +266,10 @@ int BUG_exit_code;
|
||||
static NORETURN void BUG_vfl(const char *file, int line, const char *fmt, va_list params)
|
||||
{
|
||||
char prefix[256];
|
||||
va_list params_copy;
|
||||
static int in_bug;
|
||||
|
||||
va_copy(params_copy, params);
|
||||
|
||||
/* truncation via snprintf is OK here */
|
||||
if (file)
|
||||
@ -274,6 +278,13 @@ static NORETURN void BUG_vfl(const char *file, int line, const char *fmt, va_lis
|
||||
snprintf(prefix, sizeof(prefix), "BUG: ");
|
||||
|
||||
vreportf(prefix, fmt, params);
|
||||
|
||||
if (in_bug)
|
||||
abort();
|
||||
in_bug = 1;
|
||||
|
||||
trace2_cmd_error_va(fmt, params_copy);
|
||||
|
||||
if (BUG_exit_code)
|
||||
exit(BUG_exit_code);
|
||||
abort();
|
||||
|
Loading…
Reference in New Issue
Block a user