mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-12-04 00:53:41 +08:00
a7f1d2c0c7
This adds support for `fish_trace`, a new variable intended to serve the same purpose as `set -x` as in bash. Setting this variable to anything non-empty causes execution to be traced. In the future we may give more specific meaning to the value of the variable. The user's prompt is not traced unless you run it explicitly. Events are also not traced because it is noisy; however autoloading is. Fixes #3427
73 lines
1005 B
Fish
73 lines
1005 B
Fish
# RUN: %fish %s
|
|
|
|
echo untraced
|
|
# CHECK: untraced
|
|
|
|
set fish_trace 1
|
|
|
|
for i in 1 2 3
|
|
echo $i
|
|
end
|
|
|
|
# CHECK: 1
|
|
# CHECK: 2
|
|
# CHECK: 3
|
|
|
|
# CHECKERR: + for 1 2 3
|
|
# CHECKERR: ++ echo 1
|
|
# CHECKERR: ++ echo 2
|
|
# CHECKERR: ++ echo 3
|
|
# CHECKERR: + end for
|
|
|
|
while true
|
|
and true
|
|
echo inside
|
|
break
|
|
end
|
|
|
|
# CHECK: inside
|
|
|
|
# CHECKERR: + while
|
|
# CHECKERR: + true
|
|
# CHECKERR: + true
|
|
# CHECKERR: ++ echo inside
|
|
# CHECKERR: ++ break
|
|
# CHECKERR: + end while
|
|
|
|
while true && true
|
|
echo inside2
|
|
break
|
|
end
|
|
|
|
# CHECK: inside2
|
|
|
|
# CHECKERR: + while
|
|
# CHECKERR: + true
|
|
# CHECKERR: + true
|
|
# CHECKERR: ++ echo inside2
|
|
# CHECKERR: ++ break
|
|
# CHECKERR: + end while
|
|
|
|
if true && false
|
|
else if false || true
|
|
echo inside3
|
|
else if will_not_execute
|
|
end
|
|
|
|
# CHECK: inside3
|
|
|
|
# CHECKERR: + if
|
|
# CHECKERR: + true
|
|
# CHECKERR: + false
|
|
# CHECKERR: + else if
|
|
# CHECKERR: + false
|
|
# CHECKERR: + true
|
|
# CHECKERR: ++ echo inside3
|
|
# CHECKERR: + end if
|
|
|
|
set -e fish_trace
|
|
# CHECKERR: + set -e fish_trace
|
|
|
|
echo untraced
|
|
# CHECK: untraced
|