env GO111MODULE=off

[!exec:echo] skip
[!exec:false] skip

exec echo foo
stdout foo

exec echo foo &
exec echo bar &
! exec false &

# Starting a background process should clear previous output.
! stdout foo

# Wait should set the output to the concatenated outputs of the background
# programs, in the order in which they were started.
wait
stdout 'foo\nbar'

# The end of the test should interrupt or kill any remaining background
# programs, but that should not cause the test to fail if it does not
# care about the exit status of those programs.
[exec:sleep] ? exec sleep 86400 &

# It should also cancel any backgrounded builtins that respond to Context
# cancellation.
? sleep 86400s &
