1# Test that xtrace output is correctly generated 2 3%prep 4 mkdir xtrace.tmp && cd xtrace.tmp 5 6 function xtf { 7 local regression_test_dummy_variable 8 print "$*" 9 } 10 function xtfx { 11 local regression_test_dummy_variable 12 print "Tracing: (){ builtin 2>file }" 2>>xtrace.err 13 { print "Tracing: (){ { builtin } 2>file }" } 2>>xtrace.err 14 } 15 echo 'print "$*"' > xt.in 16 17%test 18 19 PS4='+%N:%i> ' 20 set -x 21 print 'Tracing: builtin' 22 print 'Tracing: builtin 2>file' 2>xtrace.err 23 cat <<<'Tracing: external' 24 cat <<<'Tracing: external 2>file' 2>>xtrace.err 25 ( print 'Tracing: ( builtin )' ) 26 ( print 'Tracing: ( builtin ) 2>file' ) 2>>xtrace.err 27 ( cat <<<'Tracing: ( external )' ) 28 ( cat <<<'Tracing: ( external ) 2>file' ) 2>>xtrace.err 29 { print 'Tracing: { builtin }' } 30 { print 'Tracing: { builtin } 2>file' } 2>>xtrace.err 31 { cat <<<'Tracing: { external }' } 32 { cat <<<'Tracing: { external } 2>file' } 2>>xtrace.err 33 repeat 1 do print 'Tracing: do builtin done'; done 34 repeat 1 do print 'Tracing: do builtin done 2>file'; done 2>>xtrace.err 35 repeat 1 do cat <<<'Tracing: do external done'; done 36 repeat 1 do cat <<<'Tracing: do external done 2>file'; done 2>>xtrace.err 37 xtf 'Tracing: function' 38 xtf 'Tracing: function 2>file' 2>>xtrace.err 39 xtfx 40 . ./xt.in 'Tracing: source' 41 . ./xt.in 'Tracing: source 2>file' 2>>xtrace.err 42 set +x 43 cat xtrace.err 440:xtrace with and without redirection 45>Tracing: builtin 46>Tracing: builtin 2>file 47>Tracing: external 48>Tracing: external 2>file 49>Tracing: ( builtin ) 50>Tracing: ( builtin ) 2>file 51>Tracing: ( external ) 52>Tracing: ( external ) 2>file 53>Tracing: { builtin } 54>Tracing: { builtin } 2>file 55>Tracing: { external } 56>Tracing: { external } 2>file 57>Tracing: do builtin done 58>Tracing: do builtin done 2>file 59>Tracing: do external done 60>Tracing: do external done 2>file 61>Tracing: function 62>Tracing: function 2>file 63>Tracing: (){ builtin 2>file } 64>Tracing: (){ { builtin } 2>file } 65>Tracing: source 66>Tracing: source 2>file 67>+(eval):8> print 'Tracing: ( builtin ) 2>file' 68>+(eval):10> cat 69>+(eval):12> print 'Tracing: { builtin } 2>file' 70>+(eval):14> cat 71>+(eval):16> print 'Tracing: do builtin done 2>file' 72>+(eval):18> cat 73>+xtf:1> local regression_test_dummy_variable 74>+xtf:2> print 'Tracing: function 2>file' 75>+xtfx:3> print 'Tracing: (){ { builtin } 2>file }' 76?+(eval):3> print 'Tracing: builtin' 77?+(eval):4> print 'Tracing: builtin 2>file' 78?+(eval):5> cat 79?+(eval):6> cat 80?+(eval):7> print 'Tracing: ( builtin )' 81?+(eval):9> cat 82?+(eval):11> print 'Tracing: { builtin }' 83?+(eval):13> cat 84?+(eval):15> print 'Tracing: do builtin done' 85?+(eval):17> cat 86?+(eval):19> xtf 'Tracing: function' 87?+xtf:1> local regression_test_dummy_variable 88?+xtf:2> print 'Tracing: function' 89?+(eval):20> xtf 'Tracing: function 2>file' 90?+(eval):21> xtfx 91?+xtfx:1> local regression_test_dummy_variable 92?+xtfx:2> print 'Tracing: (){ builtin 2>file }' 93?+(eval):22> . ./xt.in 'Tracing: source' 94?+./xt.in:1> print 'Tracing: source' 95?+(eval):23> . ./xt.in 'Tracing: source 2>file' 96?+./xt.in:1> print 'Tracing: source 2>file' 97?+(eval):24> set +x 98 99 typeset -ft xtf 100 xtf 'Tracing: function' 1010:tracing function 102>Tracing: function 103?+xtf:1> local regression_test_dummy_variable 104?+xtf:2> print 'Tracing: function' 105 106 echo 'PS4="+%x:%I> " 107 fn() { 108 print This is fn. 109 } 110 : 111 fn 112 ' >fnfile 113 $ZTST_testdir/../Src/zsh -fx ./fnfile 2>errfile 114 grep '\./fnfile' errfile 1>&2 1150:Trace output with sourcefile and line number. 116>This is fn. 117?+./fnfile:1> PS4='+%x:%I> ' 118?+./fnfile:5> : 119?+./fnfile:6> fn 120?+./fnfile:3> print This is fn. 121 122 set -x 123 [[ 'f o' = 'f x'* || 'b r' != 'z o' && 'squashy sound' < 'squishy sound' ]] 124 [[ -e nonexistentfile || ( -z '' && -t 3 ) ]] 125 set +x 1260:Trace for conditions 127?+(eval):2> [[ 'f o' == f\ x* || 'b r' != z\ o && 'squashy sound' < 'squishy sound' ]] 128?+(eval):3> [[ -e nonexistentfile || -z '' && -t 3 ]] 129?+(eval):4> set +x 130