mirror of
https://github.com/fish-shell/fish-shell
synced 2024-11-10 23:24:39 +00:00
Fix fg tests on macOS
Apparently on macOS SIGTSTP (from control-Z) causes `read()` to return EINTR. This means `cat | cat` will exit as soon as it's backgrounded and brought back. So instead we use `sleep`, which won't read(), and therefore is impervious to these puny attacks. See discussion in #7447.
This commit is contained in:
parent
21041e3cc7
commit
4c9d01cab0
1 changed files with 8 additions and 5 deletions
|
@ -15,11 +15,12 @@ send, sendline, sleep, expect_prompt, expect_re, expect_str = (
|
||||||
)
|
)
|
||||||
expect_prompt()
|
expect_prompt()
|
||||||
|
|
||||||
sendline("cat | cat")
|
sendline("sleep 500")
|
||||||
sendline("set -l foo bar; echo $foo")
|
sendline("set -l foo bar; echo $foo")
|
||||||
expect_str("set -l foo bar; echo $foo")
|
expect_str("")
|
||||||
sleep(0.2)
|
sleep(0.2)
|
||||||
|
|
||||||
|
# ctrl-z - send job to background
|
||||||
send("\x1A")
|
send("\x1A")
|
||||||
sleep(0.2)
|
sleep(0.2)
|
||||||
expect_prompt()
|
expect_prompt()
|
||||||
|
@ -28,10 +29,12 @@ expect_str("bar")
|
||||||
|
|
||||||
expect_prompt()
|
expect_prompt()
|
||||||
sendline("fg")
|
sendline("fg")
|
||||||
expect_str("Send job 1, 'cat | cat' to foreground")
|
expect_str("Send job 1, 'sleep 500' to foreground")
|
||||||
|
sleep(0.2)
|
||||||
sendline("set -l foo bar; echo $foo")
|
sendline("set -l foo bar; echo $foo")
|
||||||
expect_str("set -l foo bar; echo $foo")
|
expect_str("")
|
||||||
send("\x04")
|
# ctrl-c - cancel
|
||||||
|
send("\x03")
|
||||||
|
|
||||||
expect_prompt()
|
expect_prompt()
|
||||||
sendline("set -l foo bar; echo $foo")
|
sendline("set -l foo bar; echo $foo")
|
||||||
|
|
Loading…
Reference in a new issue