fish-shell/tests/checks/caller-observer.fish
ridiculousfish c936c27fe1 Fix up --on-job-exit caller
The `function --on-job-exit caller` feature allows a command substitution
to observe when the parent job exits. This has never worked very well - in
particular it is based on job IDs, so a function that observes this will
run multiple times. Implement it properly.

Do this by having a not-recycled "internal job id".

This is only used by psub, but ensure it works properly none-the-less.

faho:
Backport of 6bf9ae9aeb

Fixes #6613
2020-02-20 19:14:23 +01:00

35 lines
805 B
Fish

#RUN: %fish %s
# Verify the '--on-job-exit caller' misfeature.
function make_call_observer -a type
function observer_$type --on-job-exit caller --inherit-variable type
echo "Observed exit of $type"
end
end
command echo "echo ran 1" (make_call_observer external)
#CHECK: echo ran 1
#CHECK: Observed exit of external
builtin echo "echo ran 2" (make_call_observer builtin)
#CHECK: echo ran 2
#CHECK: Observed exit of builtin
function func_echo
builtin echo $argv
end
func_echo "echo ran 3" (make_call_observer function)
#CHECK: echo ran 3
#CHECK: Observed exit of function
# They should not fire again.
# TODO: We don't even clean up the functions!
command echo "echo ran 4"
builtin echo "echo ran 5"
func_echo "echo ran 6"
#CHECK: echo ran 4
#CHECK: echo ran 5
#CHECK: echo ran 6