mirror of
https://github.com/fish-shell/fish-shell
synced 2024-12-27 21:33:09 +00:00
1c5b1ff5c2
This test launches two background processes and is sensitive to interleaving of output. Fix it so that newlines are not output by the background process. Hopefully this fixes the flakiness of this test.
50 lines
1.6 KiB
Fish
50 lines
1.6 KiB
Fish
# RUN: env fth=%fish_test_helper %fish %s
|
|
|
|
# Ensure that lots of nested jobs all end up in the same pgroup.
|
|
|
|
function save_pgroup -a var_name
|
|
$fth print_pgrp | read -g $var_name
|
|
end
|
|
|
|
# Here everything should live in the pgroup of the first fish_test_helper.
|
|
$fth print_pgrp | read -g global_group | save_pgroup g1 | begin
|
|
save_pgroup g2
|
|
end
|
|
|
|
[ "$global_group" -eq "$g1" ] && [ "$g1" -eq "$g2" ]
|
|
and echo "All pgroups agreed"
|
|
or echo "Pgroups disagreed. Should be in $global_group but found $g1 and $g2"
|
|
# CHECK: All pgroups agreed
|
|
|
|
# Here everything should live in fish's pgroup.
|
|
# Unfortunately we don't know what fish's pgroup is (it may not be fish's pid).
|
|
# So run it twice and verify that everything agrees; this implies that it could
|
|
# not have used any of the pids of the child procs.
|
|
function nothing
|
|
end
|
|
nothing | $fth print_pgrp | read -g a0 | save_pgroup a1 | begin
|
|
save_pgroup a2
|
|
end
|
|
nothing | $fth print_pgrp | read -g b0 | save_pgroup b1 | begin
|
|
save_pgroup b2
|
|
end
|
|
|
|
[ "$a0" -eq "$a1" ] && [ "$a1" -eq "$a2" ] \
|
|
&& [ "$b0" -eq "$b1" ] && [ "$b1" -eq "$b2" ] \
|
|
&& [ "$a0" -eq "$b0" ]
|
|
and echo "All pgroups agreed"
|
|
or echo "Pgroups disagreed. Found $a0 $a1 $a2, and $b0 $b1 $b2"
|
|
# CHECK: All pgroups agreed
|
|
|
|
# Ensure that if a background job launches another background job, that they have different pgroups.
|
|
# The pipeline here will arrange for the two pgroups to be printed on the same line, like:
|
|
# 123 124
|
|
# Our regex will capture the first pgroup and use a negative lookahead on the second.
|
|
status job-control full
|
|
$fth print_pgrp | begin
|
|
tr \n ' '
|
|
$fth print_pgrp | tr \n ' ' &
|
|
end &
|
|
wait
|
|
echo
|
|
# CHECK: {{(\d+) (?!\1)\d+}}
|