fish-shell/tests/pexpects/fg.py
Fabian Homborg 4c9d01cab0 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.
2020-11-13 15:11:29 +01:00

42 lines
778 B
Python

#!/usr/bin/env python3
from pexpect_helper import SpawnedProc
import subprocess
import sys
import time
sp = SpawnedProc()
send, sendline, sleep, expect_prompt, expect_re, expect_str = (
sp.send,
sp.sendline,
sp.sleep,
sp.expect_prompt,
sp.expect_re,
sp.expect_str,
)
expect_prompt()
sendline("sleep 500")
sendline("set -l foo bar; echo $foo")
expect_str("")
sleep(0.2)
# ctrl-z - send job to background
send("\x1A")
sleep(0.2)
expect_prompt()
sendline("set -l foo bar; echo $foo")
expect_str("bar")
expect_prompt()
sendline("fg")
expect_str("Send job 1, 'sleep 500' to foreground")
sleep(0.2)
sendline("set -l foo bar; echo $foo")
expect_str("")
# ctrl-c - cancel
send("\x03")
expect_prompt()
sendline("set -l foo bar; echo $foo")
expect_str("bar")