fish-shell/tests/checks/invocation.fish
Fabian Homborg cf8219e3ce Exit if --no-execute is enabled don't interactively read from the terminal
Don't go into implicit interactive mode without ever executing
anything - not even `exit` or reacting to ctrl-d. That just renders
the shell useless and unquittable.
2021-01-01 21:22:52 +01:00

58 lines
1.9 KiB
Fish

#RUN: %fish -C 'set -l fish %fish' %s
$fish -c "echo 1.2.3.4."
# CHECK: 1.2.3.4.
PATH= $fish -c "command a" 2>/dev/null
echo $status
# CHECK: 127
PATH= $fish -c "echo (command a)" 2>/dev/null
echo $status
# CHECK: 127
if not set -q GITHUB_WORKFLOW
$fish -c 'if status --is-login ; echo login shell ; else ; echo not login shell ; end; if status --is-interactive ; echo interactive ; else ; echo not interactive ; end' -i
# CHECK: not login shell
# CHECK: interactive
$fish -c 'if status --is-login ; echo login shell ; else ; echo not login shell ; end; if status --is-interactive ; echo interactive ; else ; echo not interactive ; end' -l -i
# CHECK: login shell
# CHECK: interactive
else
# GitHub Action doesn't start this in a terminal, so fish would complain.
# Instead, we just fake the result, since we have no way to indicate a skipped test.
echo not login shell
echo interactive
echo login shell
echo interactive
end
$fish -c 'if status --is-login ; echo login shell ; else ; echo not login shell ; end; if status --is-interactive ; echo interactive ; else ; echo not interactive ; end' -l
# CHECK: login shell
# CHECK: not interactive
$fish -c 'if status --is-login ; echo login shell ; else ; echo not login shell ; end; if status --is-interactive ; echo interactive ; else ; echo not interactive ; end'
# CHECK: not login shell
# CHECK: not interactive
$fish -c 'if status --is-login ; echo login shell ; else ; echo not login shell ; end; if status --is-interactive ; echo interactive ; else ; echo not interactive ; end' -l
# CHECK: login shell
# CHECK: not interactive
# Arguments for -c
$fish -c 'string escape $argv' 1 2 3
# CHECK: 1
# CHECK: 2
# CHECK: 3
# Two -cs
$fish -c 'string escape y$argv' -c 'string escape x$argv' 1 2 3
# CHECK: y1
# CHECK: y2
# CHECK: y3
# CHECK: x1
# CHECK: x2
# CHECK: x3
# Should just do nothing.
$fish --no-execute