]> git.ipfire.org Git - thirdparty/git.git/blobdiff - t/t0210-trace2-normal.sh
test-dir-iterator: do not assume errno values
[thirdparty/git.git] / t / t0210-trace2-normal.sh
index 03a0aedb1d2bd11e1621e048232e22f35494acd0..ce7574edb1e772fca30044ceb8a7cf3ac2e19470 100755 (executable)
@@ -3,6 +3,11 @@
 test_description='test trace2 facility (normal target)'
 . ./test-lib.sh
 
+# Turn off any inherited trace2 settings for this test.
+sane_unset GIT_TRACE2 GIT_TRACE2_PERF GIT_TRACE2_EVENT
+sane_unset GIT_TRACE2_BRIEF
+sane_unset GIT_TRACE2_CONFIG_PARAMS
+
 # Add t/helper directory to PATH so that we can use a relative
 # path to run nested instances of test-tool.exe (see 004child).
 # This helps with HEREDOC comparisons later.
@@ -15,11 +20,6 @@ PATH="$TTDIR:$PATH" && export PATH
 # Warning: So you may see extra lines in artifact files when
 # Warning: interactively debugging.
 
-# Turn off any inherited trace2 settings for this test.
-unset GIT_TR2 GIT_TR2_PERF GIT_TR2_EVENT
-unset GIT_TR2_BRIEF
-unset GIT_TR2_CONFIG_PARAMS
-
 V=$(git version | sed -e 's/^git version //') && export V
 
 # There are multiple trace2 targets: normal, perf, and event.
@@ -27,12 +27,12 @@ V=$(git version | sed -e 's/^git version //') && export V
 # to whatever filtering that target decides to do).
 # This script tests the normal target in isolation.
 #
-# Defer setting GIT_TR2 until the actual command line we want to test
+# Defer setting GIT_TRACE2 until the actual command line we want to test
 # because hidden git and test-tool commands run by the test harness
 # can contaminate our output.
 
 # Enable "brief" feature which turns off "<clock> <file>:<line> " prefix.
-GIT_TR2_BRIEF=1 && export GIT_TR2_BRIEF
+GIT_TRACE2_BRIEF=1 && export GIT_TRACE2_BRIEF
 
 # Basic tests of the trace2 normal stream.  Since this stream is used
 # primarily with printf-style debugging/tracing, we do limited testing
@@ -54,7 +54,7 @@ GIT_TR2_BRIEF=1 && export GIT_TR2_BRIEF
 
 test_expect_success 'normal stream, return code 0' '
        test_when_finished "rm trace.normal actual expect" &&
-       GIT_TR2="$(pwd)/trace.normal" test-tool trace2 001return 0 &&
+       GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 0 &&
        perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
        cat >expect <<-EOF &&
                version $V
@@ -68,7 +68,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_TR2="$(pwd)/trace.normal" test-tool trace2 001return 1 &&
+       test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 001return 1 &&
        perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
        cat >expect <<-EOF &&
                version $V
@@ -80,13 +80,28 @@ test_expect_success 'normal stream, return code 1' '
        test_cmp expect actual
 '
 
+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 &&
+       cat >expect <<-EOF &&
+               version $V
+               start _EXE_ trace2 001return 0
+               cmd_name trace2 (trace2)
+               exit elapsed:_TIME_ code:0
+               atexit elapsed:_TIME_ code:0
+       EOF
+       test_cmp expect actual
+'
+
 # Verb 002exit
 #
 # Explicit exit(code) from within cmd_<verb> propagates <code>.
 
 test_expect_success 'normal stream, exit code 0' '
        test_when_finished "rm trace.normal actual expect" &&
-       GIT_TR2="$(pwd)/trace.normal" test-tool trace2 002exit 0 &&
+       GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 0 &&
        perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
        cat >expect <<-EOF &&
                version $V
@@ -100,7 +115,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_TR2="$(pwd)/trace.normal" test-tool trace2 002exit 1 &&
+       test_must_fail env GIT_TRACE2="$(pwd)/trace.normal" test-tool trace2 002exit 1 &&
        perl "$TEST_DIRECTORY/t0210/scrub_normal.perl" <trace.normal >actual &&
        cat >expect <<-EOF &&
                version $V
@@ -118,7 +133,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_TR2="$(pwd)/trace.normal" test-tool trace2 003error "hello world" "this is a test" &&
+       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 &&
        cat >expect <<-EOF &&
                version $V
@@ -132,4 +147,43 @@ test_expect_success 'normal stream, error event' '
        test_cmp expect actual
 '
 
+sane_unset GIT_TRACE2_BRIEF
+
+# Now test without environment variables and get all Trace2 settings
+# from the global config.
+
+test_expect_success 'using global config, normal stream, return code 0' '
+       test_when_finished "rm trace.normal actual expect" &&
+       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 &&
+       cat >expect <<-EOF &&
+               version $V
+               start _EXE_ trace2 001return 0
+               cmd_name trace2 (trace2)
+               exit elapsed:_TIME_ code:0
+               atexit elapsed:_TIME_ code:0
+       EOF
+       test_cmp expect actual
+'
+
+test_expect_success 'using global config with include' '
+       test_when_finished "rm trace.normal actual expect real.gitconfig" &&
+       test_config_global trace2.normalBrief 1 &&
+       test_config_global trace2.normalTarget "$(pwd)/trace.normal" &&
+       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 &&
+       cat >expect <<-EOF &&
+               version $V
+               start _EXE_ trace2 001return 0
+               cmd_name trace2 (trace2)
+               exit elapsed:_TIME_ code:0
+               atexit elapsed:_TIME_ code:0
+       EOF
+       test_cmp expect actual
+'
+
 test_done