зеркало из https://github.com/microsoft/git.git
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:
Коммит
aa2d3dbdf5
|
@ -198,6 +198,14 @@ static int ut_006data(int argc, const char **argv)
|
||||||
return 0;
|
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:
|
* Usage:
|
||||||
* test-tool trace2 <ut_name_1> <ut_usage_1>
|
* 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_004child, "004child", "[<child_command_line>]" },
|
||||||
{ ut_005exec, "005exec", "<git_command_args>" },
|
{ ut_005exec, "005exec", "<git_command_args>" },
|
||||||
{ ut_006data, "006data", "[<category> <key> <value>]+" },
|
{ ut_006data, "006data", "[<category> <key> <value>]+" },
|
||||||
|
{ ut_007bug, "007bug", "" },
|
||||||
};
|
};
|
||||||
/* clang-format on */
|
/* clang-format on */
|
||||||
|
|
||||||
|
|
|
@ -147,6 +147,25 @@ test_expect_success 'normal stream, error event' '
|
||||||
test_cmp expect actual
|
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
|
sane_unset GIT_TRACE2_BRIEF
|
||||||
|
|
||||||
# Now test without environment variables and get all Trace2 settings
|
# 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)
|
static NORETURN void BUG_vfl(const char *file, int line, const char *fmt, va_list params)
|
||||||
{
|
{
|
||||||
char prefix[256];
|
char prefix[256];
|
||||||
|
va_list params_copy;
|
||||||
|
static int in_bug;
|
||||||
|
|
||||||
|
va_copy(params_copy, params);
|
||||||
|
|
||||||
/* truncation via snprintf is OK here */
|
/* truncation via snprintf is OK here */
|
||||||
if (file)
|
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: ");
|
snprintf(prefix, sizeof(prefix), "BUG: ");
|
||||||
|
|
||||||
vreportf(prefix, fmt, params);
|
vreportf(prefix, fmt, params);
|
||||||
|
|
||||||
|
if (in_bug)
|
||||||
|
abort();
|
||||||
|
in_bug = 1;
|
||||||
|
|
||||||
|
trace2_cmd_error_va(fmt, params_copy);
|
||||||
|
|
||||||
if (BUG_exit_code)
|
if (BUG_exit_code)
|
||||||
exit(BUG_exit_code);
|
exit(BUG_exit_code);
|
||||||
abort();
|
abort();
|
||||||
|
|
Загрузка…
Ссылка в новой задаче