diff options
Diffstat (limited to 't/t0210-trace2-normal.sh')
| -rwxr-xr-x | t/t0210-trace2-normal.sh | 64 |
1 files changed, 52 insertions, 12 deletions
diff --git a/t/t0210-trace2-normal.sh b/t/t0210-trace2-normal.sh index eff9a59dbd..96c68f65df 100755 --- a/t/t0210-trace2-normal.sh +++ b/t/t0210-trace2-normal.sh @@ -53,10 +53,41 @@ GIT_TRACE2_BRIEF=1 && export GIT_TRACE2_BRIEF # # Implicit return from cmd_<verb> function propagates <code>. +scrub_normal () { + # Scrub the variable fields from the normal trace2 output to make + # testing easier: + # + # 1. Various messages include an elapsed time in the middle of the + # message. Replace the time with a placeholder to simplify our + # HEREDOC in the test script. + # + # 2. We expect: + # + # start <argv0> [<argv1> [<argv2> [...]]] + # + # where argv0 might be a relative or absolute path, with or + # without quotes, and platform dependent. Replace argv0 with a + # token for HEREDOC matching in the test script. + # + # 3. Likewise, the 'cmd_path' message breaks out argv[0]. + # + # This line is only emitted when RUNTIME_PREFIX is defined, + # so just omit it for testing purposes. + # + # 4. 'cmd_ancestry' is not implemented everywhere, so for portability's + # sake, skip it when parsing normal. + sed \ + -e 's/elapsed:[0-9]*\.[0-9][0-9]*\([eE][-+]\{0,1\}[0-9][0-9]*\)\{0,1\}/elapsed:_TIME_/g' \ + -e "s/^start '[^']*' \(.*\)/start _EXE_ \1/" \ + -e 's/^start [^ ][^ ]* \(.*\)/start _EXE_ \1/' \ + -e '/^cmd_path/d' \ + -e '/^cmd_ancestry/d' +} + test_expect_success 'normal stream, return code 0' ' test_when_finished "rm trace.normal actual expect" && GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 @@ -70,7 +101,7 @@ test_expect_success 'normal stream, return code 0' ' test_expect_success 'normal stream, return code 1' ' test_when_finished "rm trace.normal actual expect" && test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 1 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 1 @@ -85,7 +116,7 @@ test_expect_success 'automatic filename' ' test_when_finished "rm -r traces actual expect" && mkdir traces && GIT_TRACE2="$(pwd)/traces" test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <"$(ls traces/*)" >actual && + scrub_normal <"$(ls traces/*)" >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 @@ -103,7 +134,7 @@ test_expect_success 'automatic filename' ' test_expect_success 'normal stream, exit code 0' ' test_when_finished "rm trace.normal actual expect" && GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 002exit 0 @@ -117,7 +148,7 @@ test_expect_success 'normal stream, exit code 0' ' test_expect_success 'normal stream, exit code 1' ' test_when_finished "rm trace.normal actual expect" && test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 1 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 002exit 1 @@ -135,7 +166,7 @@ test_expect_success 'normal stream, exit code 1' ' test_expect_success 'normal stream, error event' ' test_when_finished "rm trace.normal actual expect" && GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 003error "hello world" "this is a test" && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 003error '\''hello world'\'' '\''this is a test'\'' @@ -155,7 +186,7 @@ test_expect_success 'normal stream, error event' ' 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 && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 007bug @@ -179,7 +210,7 @@ test_expect_success 'bug messages with BUG_if_bug() are written to trace2' ' sed "s/^.*: //" <err >actual && test_cmp expect actual && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 008bug @@ -205,7 +236,7 @@ test_expect_success 'bug messages without explicit BUG_if_bug() are written to t sed "s/^.*: //" <err >actual && test_cmp expect actual && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 009bug_BUG @@ -230,7 +261,7 @@ test_expect_success 'bug messages followed by BUG() are written to trace2' ' sed "s/^.*: //" <err >actual && test_cmp expect actual && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 010bug_BUG @@ -243,6 +274,15 @@ test_expect_success 'bug messages followed by BUG() are written to trace2' ' test_cmp expect actual ' +test_expect_success 'a valueless true configuration variable is handled' ' + test_when_finished "rm -f trace2.normal actual expect" && + echo >expect && + GIT_TRACE2="$(pwd)/trace2.normal" \ + GIT_TRACE2_CONFIG_PARAMS=foo.true \ + git -c foo.true config foo.true >actual && + test_cmp expect actual +' + sane_unset GIT_TRACE2_BRIEF # Now test without environment variables and get all Trace2 settings @@ -253,7 +293,7 @@ test_expect_success 'using global config, normal stream, return code 0' ' test_config_global trace2.normalBrief 1 && test_config_global trace2.normalTarget "$(pwd)/trace.normal" && test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 @@ -271,7 +311,7 @@ test_expect_success 'using global config with include' ' mv "$(pwd)/.gitconfig" "$(pwd)/real.gitconfig" && test_config_global include.path "$(pwd)/real.gitconfig" && test-tool trace2 001return 0 && - perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual && + scrub_normal <trace.normal >actual && cat >expect <<-EOF && version $V start _EXE_ trace2 001return 0 |
