From ef58f1fef8569b5616076774ba223d33a1c12388 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Breitbart?= Date: Sun, 7 Jul 2019 22:19:45 +0200 Subject: [PATCH] add vttest wrapping testfile --- fixtures/escape_sequence_files/run_tests.py | 73 +++++++++++++++++++ .../{t0600-vttest1.in => t0300-vttest1.in} | 0 .../escape_sequence_files/t0300-vttest1.text | 25 +++++++ src/Terminal2.test.ts | 3 +- 4 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 fixtures/escape_sequence_files/run_tests.py rename fixtures/escape_sequence_files/{t0600-vttest1.in => t0300-vttest1.in} (100%) create mode 100644 fixtures/escape_sequence_files/t0300-vttest1.text diff --git a/fixtures/escape_sequence_files/run_tests.py b/fixtures/escape_sequence_files/run_tests.py new file mode 100644 index 00000000..08efbf3f --- /dev/null +++ b/fixtures/escape_sequence_files/run_tests.py @@ -0,0 +1,73 @@ +from glob import glob +import os +import sys +import termios +import atexit + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + + +def enable_echo(fd, enabled): + (iflag, oflag, cflag, lflag, ispeed, ospeed, cc) = termios.tcgetattr(fd) + if enabled: + lflag |= termios.ECHO + else: + lflag &= ~termios.ECHO + new_attr = [iflag, oflag, cflag, lflag, ispeed, ospeed, cc] + termios.tcsetattr(fd, termios.TCSANOW, new_attr) + +atexit.register(enable_echo, sys.stdin.fileno(), True) + +output = [] + + +def log(append=False, *s): + if append: + output[-1] += ' ' + ' '.join(str(part) for part in s) + else: + output.append(' '.join(str(part) for part in s)) + + +def reset_terminal(): + sys.stdout.write('\x1bc\x1b[H') + sys.stdout.flush() + + +def test(): + count = 0 + passed = 0 + for i, testfile in enumerate(sorted(glob(os.path.join(BASE_DIR, '*.in')))): + count += 1 + log(False, os.path.basename(testfile)) + reset_terminal() + with open(testfile) as test: + sys.stdout.write('\x1b]0;%s\x07' % os.path.basename(testfile)) + sys.stdout.write(test.read()+'\x1bt') + sys.stdout.flush() + with open(os.path.join(os.path.dirname(testfile), + os.path.basename(testfile).split('.')[0]+'.text')) as expected: + terminal_output = sys.stdin.read() + if not terminal_output: + # we are in xterm + continue + if terminal_output != expected.read(): + log(True, '\x1b[31merror\x1b[0m') + with open(os.path.join(os.path.dirname(testfile), 'output', + os.path.basename(testfile)), 'w') as t_out: + t_out.write(terminal_output) + else: + passed += 1 + log(True, '\x1b[32mpass\x1b[0m') + return count, passed + + +if __name__ == '__main__': + enable_echo(sys.stdin.fileno(), False) + count, passed = test() + enable_echo(sys.stdin.fileno(), True) + reset_terminal() + for i in range(len(output)/2+1): + if not (i+1) % 25: + sys.stdin.read() + print ''.join(i.ljust(40) for i in output[i*2:i*2+2]) + print '\x1b[33mcoverage: %s/%s (%d%%) tests passed.\x1b[0m' % (passed, count, passed*100/count) diff --git a/fixtures/escape_sequence_files/t0600-vttest1.in b/fixtures/escape_sequence_files/t0300-vttest1.in similarity index 100% rename from fixtures/escape_sequence_files/t0600-vttest1.in rename to fixtures/escape_sequence_files/t0300-vttest1.in diff --git a/fixtures/escape_sequence_files/t0300-vttest1.text b/fixtures/escape_sequence_files/t0300-vttest1.text new file mode 100644 index 00000000..d4dd93d7 --- /dev/null +++ b/fixtures/escape_sequence_files/t0300-vttest1.text @@ -0,0 +1,25 @@ +Test of autowrap, mixing control and print characters. + +I i +J j +K k +L l +M m +N n +O o +P p +Q q +R r +S s +T t +U u +V v +W w +X x +Y y +Z z + +Push + + + diff --git a/src/Terminal2.test.ts b/src/Terminal2.test.ts index 9ad84736..f0d54e5e 100644 --- a/src/Terminal2.test.ts +++ b/src/Terminal2.test.ts @@ -137,7 +137,8 @@ if (os.platform() !== 'win32') { 't0101-NLM.in', 't0103-reverse_wrap.in', 't0504-vim.in', - 't0600-vttest1.in' // FIXME: fix height and create .text + // vttest related files + 't0300-vttest1.in' ]; if (os.platform() === 'darwin') { // These are failing on macOS only