From d6a77cc6f78d9dd6c6ff3031b5458e7954046546 Mon Sep 17 00:00:00 2001 From: Fabian Homborg Date: Fri, 12 Feb 2021 18:50:42 +0100 Subject: [PATCH] Test flow control This is a bit of an interesting pexpect test, but honestly pexpect works quite well! I'm happy with it! --- tests/pexpects/terminal.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/tests/pexpects/terminal.py b/tests/pexpects/terminal.py index cdcfeb65f..8289b078f 100644 --- a/tests/pexpects/terminal.py +++ b/tests/pexpects/terminal.py @@ -3,7 +3,14 @@ from pexpect_helper import SpawnedProc # Set a 0 terminal size sp = SpawnedProc(args=["-d", "term-support"], dimensions=(0,0)) -sendline, expect_prompt, expect_str = sp.sendline, sp.expect_prompt, sp.expect_str +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() # Now confirm it defaulted to 80x24 @@ -13,3 +20,26 @@ expect_str("term-support: Terminal has 0 columns, falling back to default width" expect_str("term-support: Terminal has 0 rows, falling back to default height") expect_prompt() +sendline("stty -a") +expect_prompt() +# Confirm flow control in the shell is disabled - we should ignore the ctrl-s in there. +sendline("echo hello\x13hello") +expect_prompt("hellohello") + +# Confirm it is off for external commands +sendline("stty -a | string match -q '*-ixon -ixoff*'; echo $status") +expect_prompt("0") + +# Turn flow control on +sendline("stty ixon ixoff") +expect_prompt() +sendline("stty -a | string match -q '*ixon ixoff*'; echo $status") +expect_prompt("0") + +# Confirm flow control in the shell is disabled - we should ignore the ctrl-s in there. +sendline("echo hello\x13hello") +# This should not match because we should not get any output. +# Unfortunately we have to wait for the timeout to expire - set it to a second. +expect_str("hellohello", timeout=1, shouldfail=True) +send("\x11") # ctrl-q to resume flow +expect_prompt("hellohello")