fish-shell/tests/checks/trace.fish
ridiculousfish a7f1d2c0c7 Add support for fish_trace variable to trace execution
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
2019-11-02 14:40:57 -07:00

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