Results for xtrace.test.sh

statusbashdashmkshosh
pass 11473
ok 7680
N-I 0730
BUG 1210
FAIL 00016
total19191919
casebashdashmkshoshdescription
0pass BUG pass FAIL unset PS4
detailsdetails
1ok pass pass FAIL set -o verbose prints unevaluated code
detailsdetails
2ok N-I BUG FAIL xtrace with unprintable chars
detailsdetailsdetailsdetails
3pass N-I pass FAIL xtrace with unicode chars
detailsdetails
4pass pass pass FAIL xtrace with paths
details
5BUG N-I pass FAIL xtrace with tabs
detailsdetailsdetails
6ok BUG ok FAIL xtrace with whitespace, quotes, and backslash
detailsdetailsdetailsdetails
7ok N-I pass FAIL xtrace with newlines
detailsdetailsdetails
8pass pass ok FAIL xtrace written before command executes
detailsdetails
9ok ok ok FAIL Assignments and assign builtins
detailsdetailsdetailsdetails
10ok N-I N-I FAIL [[ ]]
detailsdetailsdetailsdetails
11pass ok ok FAIL PS4 is scoped
detailsdetailsdetails
12pass ok ok FAIL xtrace with variables in PS4
detailsdetailsdetails
13pass ok ok pass PS4 with unterminated ${
detailsdetails
14pass ok ok pass PS4 with unterminated $(
detailsdetails
15pass ok ok pass PS4 with runtime error
detailsdetails
16pass pass pass FAIL Reading $? in PS4
details
17ok N-I N-I FAIL Regression: xtrace for "declare -a a+=(v)"
detailsdetailsdetailsdetails
18pass N-I N-I FAIL Regression: xtrace for "a+=(v)"
detailsdetailsdetails
25 passed, 21 OK, 10 not implemented, 4 BUG, 16 failed, 0 timeouts, 0 cases skipped
16 failed under osh

Details on runs that didn't PASS

dash0 unset PS4

stdout:
weird bug
stderr:
osh0 unset PS4

[osh stderr] Expected '+ echo 1\n+ unset PS4\necho 2\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo 1\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ unset PS4\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\necho 2\n"

stdout:
1
2
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo 1
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ unset PS4
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
echo 2
bash1 set -o verbose prints unevaluated code

stdout:
foo
bar
stderr:
x=foo
y=bar
echo $x
echo $(echo $y)
osh1 set -o verbose prints unevaluated code

[osh stderr] Expected 'x=foo\ny=bar\necho $x\necho $(echo $y)\n', got 'osh warning: set -o verbose not implemented\n'

stdout:
foo
bar
stderr:
osh warning: set -o verbose not implemented
bash2 xtrace with unprintable chars

stdout:
abc
stderr:
+ echo $'a\003b\004c'
dash2 xtrace with unprintable chars

stdout:
stderr: 
mksh2 xtrace with unprintable chars

stdout:
a;c
stderr:
+ echo $'a;\004c\r'
osh2 xtrace with unprintable chars

[osh stderr] Expected "+ echo $'a\\u0003b\\u0004c\\u0000d'\n", got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo $'a\\u0003b\\u0004c\\u0000d'\n"

stdout:
abcd
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo $'a\u0003b\u0004c\u0000d'
dash3 xtrace with unicode chars

stdout:
stderr: 
osh3 xtrace with unicode chars

[osh stderr] Expected "+ echo '[\xce\xbc]' '[\xce\xbc]'\n", got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo '[\xce\xbc]' '[\xce\xbc]'\n"

stdout:
[μ] [μ]
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo '[μ]' '[μ]'
osh4 xtrace with paths

[osh stderr] Expected '+ echo my-dir/my_file.cc\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo my-dir/my_file.cc\n"

stdout:
my-dir/my_file.cc
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo my-dir/my_file.cc
bash5 xtrace with tabs

stdout:
[	]
stderr:
+ echo '[	]'
dash5 xtrace with tabs

stdout:
stderr: 
osh5 xtrace with tabs

[osh stderr] Expected "+ echo $'[\\t]'\n", got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo $'[\\t]'\n"

stdout:
[	]
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo $'[\t]'
bash6 xtrace with whitespace, quotes, and backslash

stdout:
1 2 ' " \
stderr:
+ echo '1 2' \' '"' '\'
dash6 xtrace with whitespace, quotes, and backslash

stdout:
1 2 ' " \
stderr:
+ echo 1 2 ' " \
mksh6 xtrace with whitespace, quotes, and backslash

stdout:
1 2 ' " \
stderr:
+ echo '1 2' \' '"' '\'
osh6 xtrace with whitespace, quotes, and backslash

[osh stderr] Expected '+ echo \'1 2\' $\'\\\'\' \'"\' $\'\\\\\'\n', got 'Local \'SHX_indent\'\nLocal \'SHX_punct\'\nLocal \'SHX_pid_str\'\n+ echo \'1 2\' $\'\\\'\' \'"\' $\'\\\\\'\n'

stdout:
1 2 ' " \
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo '1 2' $'\'' '"' $'\\'
bash7 xtrace with newlines

stdout:
[
]
stderr:
+ echo '[
]'
dash7 xtrace with newlines

stdout:
$[
]
stderr:
+ echo $[\n]
osh7 xtrace with newlines

[osh stderr] Expected "+ echo $'[\\n]'\n", got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo $'[\\n]'\n"

stdout:
[
]
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo $'[\n]'
mksh8 xtrace written before command executes

stdout:
stderr: 
+ >&2 
+ echo one
one
+ >&2 
+ echo two
two
osh8 xtrace written before command executes

[osh stderr] Expected '+ echo one\none\n+ echo two\ntwo\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo one\none\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo two\ntwo\n"

stdout:
stderr: 
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo one
one
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo two
two
bash9 Assignments and assign builtins

stdout:
2
stderr:
+ x=1
+ x=2
+ echo 2
+ readonly x=3
+ x=3
dash9 Assignments and assign builtins

stdout:
2
stderr:
+ x=1 x=2
+ echo 2
+ readonly x=3
mksh9 Assignments and assign builtins

stdout:
2
stderr:
+ x=1 x=2 
+ echo 2
+ readonly 'x=3'
osh9 Assignments and assign builtins

[osh stderr] Expected '+ x=1\n+ x=2\n+ echo 2\n+ readonly x=3\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ x=1\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ x=2\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo 2\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ readonly x=3\n"

stdout:
2
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ x=1
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ x=2
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo 2
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ readonly x=3
bash10 [[ ]]

stdout:
stderr: 
+ dir=/
+ [[ -d / ]]
+ ((  a = 42  ))
dash10 [[ ]]

stdout:
stderr: 
mksh10 [[ ]]

stdout:
stderr: 
osh10 [[ ]]

[osh stderr] Expected '+ dir=/\n+ [[ -d $dir ]]\n+ (( a = 42 ))\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ dir=/\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ [[ -d $dir ]]\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ (( a = 42 ))\n"

stdout:
stderr: 
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ dir=/
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ [[ -d $dir ]]
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ (( a = 42 ))
dash11 PS4 is scoped

stdout:
one
func
two
stderr:
+ echo one
+ f
+ local PS4=- 
- echo func
+ echo two
mksh11 PS4 is scoped

stdout:
one
func
two
stderr:
+ echo one
+ f
+ typeset 'PS4=- '
- echo func
+ echo two
osh11 PS4 is scoped

[osh stderr] Expected "+ echo one\n+ f\n+ local PS4='- '\n- echo func\n+ echo two\n" Got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo one\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ f\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ local PS4='- '\nLocal 'PS4'\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n- echo func\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ echo two\n"

stdout:
one
func
two
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo one
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ f
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ local PS4='- '
Local 'PS4'
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
- echo func
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ echo two
dash12 xtrace with variables in PS4

stdout:
one
two
stderr:
+1:x=1
+1:echo one
+2:x=2
+2:echo two
mksh12 xtrace with variables in PS4

stdout:
one
two
stderr:
+:x=1 
+1:echo one
+1:x=2 
+2:echo two
osh12 xtrace with variables in PS4

[osh stderr] Expected '+1:x=1\n+1:echo one\n+2:x=2\n+2:echo two\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+1:x=1\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+1:echo one\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+2:x=2\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+2:echo two\n"

stdout:
one
two
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+1:x=1
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+1:echo one
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+2:x=2
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+2:echo two
dash13 PS4 with unterminated ${

stdout:
stderr: 
dash: 1: Syntax error: Missing '}'
mksh13 PS4 with unterminated ${

stdout:
stderr: 
mksh: no closing quote
dash14 PS4 with unterminated $(

stdout:
stderr: 
dash: 1: Syntax error: end of file unexpected (expecting ")")
mksh14 PS4 with unterminated $(

stdout:
stderr: 
mksh: syntax error: '(' unmatched
dash15 PS4 with runtime error

stdout:
stderr: 
dash: 4: arithmetic expression: division by zero: " 1 / 0 "
mksh15 PS4 with runtime error

stdout:
stderr: 
mksh: <stdin>[4]:  1 / 0 : zero divisor
osh16 Reading $? in PS4

[osh stderr] Expected "[last=0] 'false'\n[last=1] echo ok\n", got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n[last=0] 'false'\nLocal 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n[last=1] echo ok\n"

stdout:
ok
stderr:
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
[last=0] 'false'
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
[last=1] echo ok
bash17 Regression: xtrace for "declare -a a+=(v)"

stdout:
stderr: 
+ a+=('2')
+ declare a
dash17 Regression: xtrace for "declare -a a+=(v)"

stdout:
stderr: 
mksh17 Regression: xtrace for "declare -a a+=(v)"

stdout:
stderr: 
osh17 Regression: xtrace for "declare -a a+=(v)"

[osh stderr] Expected '+ declare a+=(2)\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ declare a+=(2)\nLocal 'a'\n"

stdout:
stderr: 
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ declare a+=(2)
Local 'a'
dash18 Regression: xtrace for "a+=(v)"

stdout:
stderr: 
mksh18 Regression: xtrace for "a+=(v)"

stdout:
stderr: 
osh18 Regression: xtrace for "a+=(v)"

[osh stderr] Expected '+ a+=(2)\n', got "Local 'SHX_indent'\nLocal 'SHX_punct'\nLocal 'SHX_pid_str'\n+ a+=(2)\n"

stdout:
stderr: 
Local 'SHX_indent'
Local 'SHX_punct'
Local 'SHX_pid_str'
+ a+=(2)