diff options
Diffstat (limited to 'test')
| -rw-r--r-- | test/fs.py | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -405,9 +405,29 @@ def run_file(binary): assert closing == [b'error shell gone\n'], closing +def kill_answers(binary): + """Kill written to /ctl is answered before the editor quits.""" + with tempfile.TemporaryDirectory(prefix='pardes-kill-') as directory: + seen = {} + with session(binary, Path(directory), 'kill', terminal=seen) as (client, _): + client.write('/ctl', b'Kill\n') + deadline = time.monotonic() + 5 + while time.monotonic() < deadline: + try: + # a zombie has quit; the session reaps it + if Path(f'/proc/{seen["pid"]}/stat').read_text().split(') ')[1][0] == 'Z': + break + except FileNotFoundError: + break + time.sleep(.01) + else: + raise AssertionError('Kill did not quit the editor') + + def test(binary, quic=False): started = time.monotonic() run_file(binary) + kill_answers(binary) for options, message in [ (['--fs'], b'no such option'), (['--fs9'], b'no such option'), |
