fish-shell/tests/checks
Fabian Homborg e1d19cf571 Don't touch $SHLVL if not interactive
It's not super clear what $SHLVL is useful for, but the current
definition is essentially
"number of shells in the parent processes + 1"

which isn't *super useful*?

Bash's behavior here is a bit weird in that it increments $SHLVL
basically always, but since it auto-execs the last process it will
decrement it again, so in practice it's often not incremented.

E.g.

```
> echo $SHLVL
1
> bash -c 'echo $SHLVL; bash'
2
>> echo $SHLVL
2
```

Both bashes here end up having the same $SHLVL because this is
equivalent to `echo $SHLVL; exec bash`. Running `echo $SHLVL` and then
`bash -c 'echo $SHLVL'` in an interactive bash will have a different
result (1 and 2) because that doesn't *exec* the inner bash.

That's not something we want to get into, so what we do is increment
$SHLVL in every interactive fish. Non-interactive fish will simply
import the existing value.

That means if you had e.g. a bash that runs a fish script that ends up
opening a new fish session, you would have a $SHLVL of *2* - one for the
bash, and one for the inner fish.

We key this off is_interactive_session() (which can also be enabled
via `fish -i`) because it's easy and because `fish -i` is asking for
fish to be, in some form, "interactive".

That means most of the time $SHLVL will be "how many shells am I deep,
how often do I have to `exit`", except for when you specifically asked
for a fish to be "interactive". If that's a problem, we can rethink it.

Fixes #7864.
2021-03-29 17:44:13 +02:00
..
broken-config/fish Port config tests to littlecheck 2019-06-25 22:31:06 +02:00
abbr.fish abbr: Don't write an error if erasing nonexisting abbrs 2020-10-04 12:34:38 +02:00
alias.fish Print nicer "defined in" for functions defined on stdin/via source 2020-12-11 23:09:16 +01:00
andandoror.fish Add a note for help thing to the missing doc error message 2021-03-19 17:39:36 +01:00
andor.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
argparse.fish argparse: Make short flag names optional (#7585) 2021-01-01 11:37:25 +01:00
bad-option.fish Fix typo in bad options test 2020-02-08 13:30:48 +01:00
basic.fish Saturate exit codes to 255 for all builtins 2021-02-13 08:41:51 +01:00
bind.fish Fix bind tests 2021-02-16 16:45:59 +01:00
braces.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
broken-config.fish Port config tests to littlecheck 2019-06-25 22:31:06 +02:00
builtinbuiltin.fish Port some smaller tests to littlecheck 2020-02-08 09:31:49 +01:00
caller-observer.fish Fix up --on-job-exit caller 2020-02-08 16:23:25 -08:00
cd.fish Add some error tests for cd 2020-12-28 23:23:06 +01:00
check-all-fish-files.fish Revert "Revert "Speed up check-all-fish-files when executed locally"" 2021-03-06 17:13:20 -06:00
cmdsub-limit.fish Add a test for background procs in cmdsubs 2021-01-07 11:38:52 -08:00
colon-delimited-var.fish Clean up how PATH and CDPATH munging occurs 2019-11-02 16:48:08 -07:00
command-1.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
command-2.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
command-not-found.fish Call "fish_command_not_found" if a command wasn't found 2020-09-06 11:15:54 +02:00
command-vars-persist.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
complete_directories.fish Run __fish_complete_entries test in its own sandbox 2020-10-25 23:01:51 -05:00
complete.fish Fix error message in tests 2020-11-07 22:48:13 +01:00
contains_opt.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
count.fish Port count test to littlecheck 2019-06-26 21:19:40 +02:00
deep-cmdsub.fish Add a test for deep command substitutions 2020-01-18 11:50:50 -08:00
directory-redirect.fish Fix tests 2020-01-19 15:07:06 +01:00
disown-parent.fish Add a tricky test to verify disowning an in-flight job 2019-12-08 11:44:21 -08:00
empty.fish Run fish_indent on all our fish scripts 2020-01-13 20:34:22 +01:00
env.fish Correctly mark a node when erasing an exported variable 2019-06-28 11:22:49 -07:00
eval.fish source: Escape filenames in errors 2021-02-15 17:08:26 +01:00
exec.fish tests: Remove test for windows line ending message 2020-09-26 15:19:24 +02:00
exit-status-with-closing-stderr.fish Run fish_indent on all our fish scripts 2020-01-13 20:34:22 +01:00
expansion.fish tests: Remove leftover reference to "../test/root/bin/fish" 2020-03-28 15:46:47 +01:00
fds.fish Revert "Prevent redirecting internal processes to file descriptors above 2" 2021-03-03 22:26:33 +01:00
features-nocaret1.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
features-nocaret2.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
features-nocaret3.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
features-nocaret4.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
features-nocaret5.fish Readd ^&1 redirection 2020-02-14 20:28:46 +01:00
features-qmark1.fish Port qmark1 test to littlecheck 2019-06-25 22:31:06 +02:00
features-qmark2.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
features-string-backslashes-off.fish tests, CHANGELOG: regex-easyesc 2019-08-13 22:56:31 -07:00
features-string-backslashes.fish tests, CHANGELOG: regex-easyesc 2019-08-13 22:56:31 -07:00
fish_add_path.fish fish_add_path: Handle moving multiple arguments correctly 2021-03-04 16:10:27 +01:00
for.fish Don't overwrite unrelated variables with for-loop-variables 2020-01-08 09:10:14 +01:00
function-definition.fish Properly print leading comments and indentation in functions 2020-01-03 14:40:28 -08:00
function.fish Print nicer "defined in" for functions defined on stdin/via source 2020-12-11 23:09:16 +01:00
functions.fish Saturate exit codes to 255 for all builtins 2021-02-13 08:41:51 +01:00
git.fish checks/git: Give grep a literal tab 2021-03-04 16:25:41 +01:00
glob.fish tests: Don't rely on $HOME existing 2020-12-29 12:48:11 +01:00
history.fish Port history tests to littlecheck 2020-02-07 20:53:20 +01:00
indent.fish fish_indent: fix extra indent of continuation lines inside blocks 2021-02-16 18:39:03 +01:00
init-command-2.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
init-command-mix-ordering.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
init-command-mix.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
init-command.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
init-unreadable-cwd.fish Ignore unreadable cwd error harder 2020-02-14 20:09:07 +01:00
invocation.fish Add a separate --profile-startup option to profile startup 2021-01-29 20:46:34 +01:00
job-control-noninteractive.fish tests: Remove unnecessary status fish-path 2021-03-10 18:04:04 +01:00
job-control-not-a-tty.fish terminal_maybe_give_to_job to stop returning error on ENOTTY 2020-04-18 16:26:54 -07:00
job-ids.fish tests/job-ids: Wait for job to die 2020-01-25 14:06:34 +01:00
jobs.fish Bravely set job control to full at startup 2021-03-26 19:32:14 +01:00
line-continuation.fish Reformat fish scripts with escaped newline changes to fish_indent 2020-03-15 21:01:11 +01:00
line-number.fish argparse: Only print stacktrace when it's an error in argparse usage 2020-06-17 20:05:48 +02:00
locale.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
loops.fish Shorten set --show output 2020-04-26 08:49:01 +02:00
math.fish Add max and min math functions 2021-03-28 13:22:44 -07:00
no-execute.fish Don't time --no-execute 2020-02-17 11:39:53 +01:00
noshebang.fish Rationalize exit codes for failed execs 2021-03-27 21:37:46 -07:00
pipeline-pgroup.fish tests: Pass $fish as a variable in some cases 2020-10-06 17:40:22 +02:00
pipestatus.fish Correct $status for certain pipeline-aborting failures 2020-12-13 17:33:34 -08:00
printf.fish printf: Don't print an error if not given an argument 2020-05-18 20:48:36 +02:00
psub.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
random.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
rc-returned.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
read.fish checks/read: Print maximum if we fail to read it 2020-06-13 19:53:21 +02:00
realpath.fish builtin realpath: use absolute path also with -s/--no-symlinks 2020-12-24 08:53:08 +01:00
redirect.fish Revert "Prevent redirecting internal processes to file descriptors above 2" 2021-03-03 22:26:33 +01:00
regex-import.fish string match: Only import variables for the first matching argument 2020-12-04 18:45:08 +01:00
scoping.fish Add a note for help thing to the missing doc error message 2021-03-19 17:39:36 +01:00
self-signal-usr1.fish Stop storing block_io in job_t 2019-12-11 16:34:20 -08:00
set.fish Don't touch $SHLVL if not interactive 2021-03-29 17:44:13 +02:00
setenv.fish Port setenv tests to littlecheck 2019-07-09 10:02:50 -07:00
sigint.fish tests: Remove unnecessary status fish-path 2021-03-10 18:04:04 +01:00
sigint2.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
signal.fish Purge remnants of process expansion, document {fish,last}_pid 2020-05-16 11:58:12 +02:00
slices.fish builtin set: make slice index range optional, like in slice expansion 2021-01-28 07:19:38 +01:00
stack-overflow.fish Remove the forbidden function stack 2019-11-10 12:36:46 -08:00
status-command.fish Add status dirname and status basename convenience commands 2020-06-04 18:23:32 +02:00
status-value.fish Rationalize $status and errors 2020-01-25 17:28:41 -08:00
status.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
string-advanced.fish Test string replace transforms 2021-03-21 10:03:35 +01:00
string.fish Fix crash in string pad 2021-03-09 18:36:02 +01:00
switch.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
symlinks-not-overwritten.fish Rewrite the real file if history file is a symlink (#7754) 2021-03-08 17:46:17 +01:00
test.fish test: Add tests for error messages 2020-06-07 16:23:29 +02:00
threads.fish Reindent functions to remove useless quotes 2020-03-09 19:46:43 +01:00
time.fish List time as builtin, support time --help 2020-02-23 23:42:57 +01:00
tmux-complete.fish Disable flaky tmux test on GitHub Actions 2021-03-26 07:36:55 +01:00
trace.fish Change fish_trace prefix to "->" instead of plusses 2020-12-11 21:24:33 +01:00
type.fish type: Add --quiet back 2021-03-02 14:53:02 +01:00
umask.fish Port umask tests to littlecheck 2020-03-16 21:21:10 +01:00
variable-assignment.fish use variable assignments on commandline in completions 2020-01-17 14:53:35 +01:00
vars_as_commands.fish Port some smaller tests to littlecheck 2020-02-08 09:31:49 +01:00
version.fish Port most of the invocation tests to littlecheck 2019-06-25 20:56:29 +02:00
wildcard.fish Update littlecheck 2020-09-26 14:56:03 +02:00
wraps.fish Rework variable assignments during tab completion 2020-09-26 18:39:38 -07:00
zero_based_array.fish Port some smaller tests to littlecheck 2020-02-08 09:31:49 +01:00