import os import sys, time sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from harness import Term import fakeapi from keys import input_text, styled, check, FAILS, base for term in ("xterm-256color", "screen-256color"): t = Term(args=("-b", base, "-k", "sk-test"), term=term) t.send("some text") t.send("\x1b", 0.4) check(term + " lone esc clears input", input_text(t) == [], t) t.send("alpha beta") t.send("\x1bb") # alt+b word left t.send("X") check(term + " alt+b word left", "alpha Xbeta" in input_text(t), t) t.send("\x1b\r") # alt+enter newline t.send("Y") check(term + " alt+enter newline", input_text(t)[-2:] == ["alpha X", "Ybeta"], t) t.send("\x03", 0.2) # picker with CSI form t.send("/model\r", 0.8) s0 = styled(t) t.arrow("down", "csi") s1 = styled(t) t.arrow("up", "csi") s2 = styled(t) check(term + " picker csi down", s0 != s1, t) check(term + " picker csi up", s0 == s2, t) t.send("\x1b", 0.4) # home/end variants t.send("middle") for seq in ("\x1b[H", "\x1bOH", "\x1b[1~", "\x1b[7~"): t.send("\x1b[F" + seq) t.send("<") t.send("\x08" if False else "") check(term + " home variants", input_text(t)[-1:] == ["<<<") check(term + " end variants", input_text(t)[-1:] == ["<<<>>>"], t) t.close() print("FAILED:", len(FAILS)) sys.exit(min(len(FAILS), 100))