2020-02-07 21:10:55 +00:00
|
|
|
#RUN: %fish %s
|
2014-10-01 03:58:45 +00:00
|
|
|
status -b
|
2016-11-05 05:32:43 +00:00
|
|
|
and echo '"status -b" unexpectedly returned true at top level'
|
2014-10-01 03:58:45 +00:00
|
|
|
|
|
|
|
begin
|
|
|
|
status -b
|
2016-11-05 05:32:43 +00:00
|
|
|
or echo '"status -b" unexpectedly returned false inside a begin block'
|
2014-10-01 03:58:45 +00:00
|
|
|
end
|
|
|
|
|
2016-11-05 05:32:43 +00:00
|
|
|
status -l
|
|
|
|
and echo '"status -l" unexpectedly returned true for a non-login shell'
|
|
|
|
|
|
|
|
status -i
|
|
|
|
and echo '"status -i" unexpectedly returned true for a non-interactive shell'
|
|
|
|
|
|
|
|
status is-login
|
|
|
|
and echo '"status is-login" unexpectedly returned true for a non-login shell'
|
|
|
|
|
|
|
|
status is-interactive
|
|
|
|
and echo '"status is-interactive" unexpectedly returned true for a non-interactive shell'
|
|
|
|
|
|
|
|
# We should get an error message about an invalid combination of flags.
|
|
|
|
status --is-interactive --is-login
|
2021-11-04 05:52:17 +00:00
|
|
|
#CHECKERR: status: is-interactive is-login: options cannot be used together
|
2016-11-05 05:32:43 +00:00
|
|
|
|
|
|
|
# We should get an error message about an unexpected arg for `status
|
|
|
|
# is-block`.
|
|
|
|
status -b is-interactive
|
2021-11-04 05:52:17 +00:00
|
|
|
#CHECKERR: status: is-block is-interactive: options cannot be used together
|
|
|
|
# XXX this would be better if it referred to -b rather than what it is
|
2016-11-05 05:32:43 +00:00
|
|
|
|
|
|
|
# Try to set the job control to an invalid mode.
|
|
|
|
status job-control full1
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECKERR: status: Invalid job control mode 'full1'
|
2016-11-05 05:32:43 +00:00
|
|
|
status --job-control=1none
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECKERR: status: Invalid job control mode '1none'
|
2016-11-05 05:32:43 +00:00
|
|
|
|
|
|
|
# Now set it to a valid mode.
|
|
|
|
status job-control none
|
2017-04-12 22:34:25 +00:00
|
|
|
|
|
|
|
# Check status -u outside functions
|
|
|
|
status current-function
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECK: Not a function
|
2017-04-12 22:34:25 +00:00
|
|
|
|
|
|
|
function test_function
|
|
|
|
status current-function
|
|
|
|
end
|
|
|
|
|
|
|
|
test_function
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECK: test_function
|
2018-04-24 21:02:15 +00:00
|
|
|
eval test_function
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECK: test_function
|
2018-04-24 21:02:15 +00:00
|
|
|
|
2020-02-07 21:10:55 +00:00
|
|
|
# Future Feature Flags
|
2018-04-24 21:02:15 +00:00
|
|
|
status features
|
2022-04-15 10:17:37 +00:00
|
|
|
#CHECK: stderr-nocaret on 3.0 ^ no longer redirects stderr (historical, can no longer be changed)
|
2024-01-25 17:26:48 +00:00
|
|
|
#CHECK: qmark-noglob on 3.0 ? no longer globs
|
2022-04-08 14:53:42 +00:00
|
|
|
#CHECK: regex-easyesc on 3.1 string replace -r needs fewer \'s
|
2022-04-08 15:45:41 +00:00
|
|
|
#CHECK: ampersand-nobg-in-token on 3.4 & only backgrounds if followed by a separator
|
2024-02-06 21:13:16 +00:00
|
|
|
#CHECK: remove-percent-self off 3.8 %self is no longer expanded (use $fish_pid)
|
2020-03-09 18:36:12 +00:00
|
|
|
status test-feature stderr-nocaret
|
|
|
|
echo $status
|
2021-04-07 14:43:49 +00:00
|
|
|
#CHECK: 0
|
2020-03-09 18:36:12 +00:00
|
|
|
status test-feature not-a-feature
|
|
|
|
echo $status
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECK: 2
|
2019-04-13 17:11:42 +00:00
|
|
|
|
2020-02-07 21:10:55 +00:00
|
|
|
# Ensure $status isn't reset before a function is executed
|
2019-04-13 17:11:42 +00:00
|
|
|
function echo_last
|
2020-03-09 18:36:12 +00:00
|
|
|
echo $status
|
2019-04-13 17:11:42 +00:00
|
|
|
end
|
|
|
|
|
2020-03-09 18:36:12 +00:00
|
|
|
false
|
|
|
|
echo_last
|
|
|
|
echo $status #1
|
2020-02-07 21:10:55 +00:00
|
|
|
#CHECK: 1
|
|
|
|
#CHECK: 0
|
2020-02-08 14:37:10 +00:00
|
|
|
|
|
|
|
# Verify that if swallows failure - see #1061
|
2020-03-09 18:36:12 +00:00
|
|
|
if false
|
|
|
|
end
|
|
|
|
echo $status
|
2020-02-08 14:37:10 +00:00
|
|
|
#CHECK: 0
|
2021-04-03 22:36:04 +00:00
|
|
|
|
|
|
|
# Verify errors from writes - see #7857.
|
|
|
|
if test -e /dev/full
|
|
|
|
# Failed writes to stdout produce 1.
|
|
|
|
echo foo > /dev/full
|
|
|
|
if test $status -ne 1
|
|
|
|
echo "Wrong status when writing to /dev/full"
|
|
|
|
end
|
|
|
|
|
|
|
|
# Here the builtin should fail with status 2,
|
|
|
|
# and also the write should fail with status 1.
|
|
|
|
# The builtin has precedence.
|
|
|
|
builtin string --not-a-valid-option 2> /dev/full
|
|
|
|
if test $status -ne 2
|
|
|
|
echo "Wrong status for failing builtin"
|
|
|
|
end
|
|
|
|
echo "Failed write tests finished"
|
|
|
|
else
|
|
|
|
echo "Failed write tests skipped"
|
|
|
|
echo "write: skipped" 1>&2
|
|
|
|
echo "write: skipped" 1>&2
|
|
|
|
end
|
|
|
|
# CHECK: Failed write tests {{finished|skipped}}
|
|
|
|
# CHECKERR: write: {{.*}}
|
|
|
|
# CHECKERR: write: {{.*}}
|
2023-02-13 15:59:28 +00:00
|
|
|
|
|
|
|
function test-stack-trace-main
|
|
|
|
status stack-trace
|
|
|
|
end
|
|
|
|
|
|
|
|
function test-stack-trace-other
|
|
|
|
test-stack-trace-main
|
|
|
|
end
|
|
|
|
|
|
|
|
printf "%s\n" (test-stack-trace-other | string replace \t '<TAB>')[1..4]
|
|
|
|
# CHECK: in function 'test-stack-trace-main'
|
|
|
|
# CHECK: <TAB>called on line {{\d+}} of file {{.*}}/status.fish
|
|
|
|
# CHECK: in function 'test-stack-trace-other'
|
|
|
|
# CHECK: <TAB>called on line {{\d+}} of file {{.*}}/status.fish
|
|
|
|
|
|
|
|
functions -c test-stack-trace-other test-stack-trace-copy
|
|
|
|
printf "%s\n" (test-stack-trace-copy | string replace \t '<TAB>')[1..4]
|
|
|
|
# CHECK: in function 'test-stack-trace-main'
|
|
|
|
# CHECK: <TAB>called on line {{\d+}} of file {{.*}}/status.fish
|
|
|
|
# CHECK: in function 'test-stack-trace-copy'
|
|
|
|
# CHECK: <TAB>called on line {{\d+}} of file {{.*}}/status.fish
|