diff --git a/tests/checks/trap.fish b/tests/checks/trap.fish new file mode 100644 index 000000000..e1afc1cb8 --- /dev/null +++ b/tests/checks/trap.fish @@ -0,0 +1,51 @@ +# RUN: %fish %s + +set -g SIGUSR1_COUNT 0 + +function gotsigusr1 + set -g SIGUSR1_COUNT (math $SIGUSR1_COUNT + 1) + echo "Got USR1: $SIGUSR1_COUNT" + +end + +function handle1 --on-signal SIGUSR1 + gotsigusr1 +end + +function handle_us42 --on-signal SIGUSR2 +end + +kill -USR1 $fish_pid +sleep .1 +#CHECK: Got USR1: 1 + +kill -USR1 $fish_pid +sleep .1 +#CHECK: Got USR1: 2 + +kill -USR2 $fish_pid +sleep .1 +kill -USR2 $fish_pid +sleep .1 + +# Previous signals do not re-trigger handlers. +functions --erase handle1 +kill -USR1 $fish_pid +sleep .1 +kill -USR1 $fish_pid +sleep .1 + +kill -USR2 $fish_pid +sleep .1 + +# Send the signal and immediately define the function; it should not excute. +kill -USR1 $fish_pid +function handle1 --on-signal SIGUSR1 + gotsigusr1 +end +echo "Hope it did not run" +#CHECK: Hope it did not run + +kill -USR1 $fish_pid +sleep .1 +#CHECK: Got USR1: 3