diff options
Diffstat (limited to 'tests/extern')
| -rw-r--r-- | tests/extern/README.md | 17 | ||||
| -rw-r--r-- | tests/extern/kitty/parser.py | 9 |
2 files changed, 21 insertions, 5 deletions
diff --git a/tests/extern/README.md b/tests/extern/README.md index cff42ed..2a52e29 100644 --- a/tests/extern/README.md +++ b/tests/extern/README.md @@ -2,7 +2,9 @@ This directory holds test suites imported from external projects. These are kept for reference and cross-checking against our own terminal emulator's -behavior. On Linux, `make test` builds and runs the adapted Kitty parser suite. +behavior. Every unsanitized Linux build runs the adapted Kitty parser +suite with the unit tests. `-Dkitty_tests=true` makes a missing suite an +error. ## kitty/ @@ -35,9 +37,20 @@ Kitty parser test suite against it via a Python compatibility layer. ### Test status (14 tests) All 14 tests pass. Features implemented for Kitty parity include DEC -Special Graphics charset translation (G0/G1, SO/SI), literal `\t` cells, +Special Graphics charset translation (G0/G1, SO/SI), LNM-default-off linefeed semantics, CSI insert-character and REP edge cases, DECRQM mode reports, DECRQSS (DCS `$q`) and XTGETTCAP (DCS `+q`) responses, DECCARA/DECSACE (CSI `$r` / `*x`), secondary device attributes (CSI `=c`), XTWINOPS cell-size report (CSI `14t`), underline styles 0–5, and SGR underline color (58/59) including colon-form subparameters. + +### Deliberate differences from Kitty + +The terminal follows xterm in two places. `parser.py` checks the xterm +result there, with a comment at each check. + +- A cursor position report (CSI 6n) with a pending wrap reports the last + column. Kitty reports the first column of the next line. +- HT only moves the cursor. Kitty writes a tab cell and blanks the cells + it skips, so a tab erases the text under it. `spec-test` checks that a + tab does not erase. diff --git a/tests/extern/kitty/parser.py b/tests/extern/kitty/parser.py index 537e1c0..76357fd 100644 --- a/tests/extern/kitty/parser.py +++ b/tests/extern/kitty/parser.py @@ -757,7 +757,9 @@ class TestParser(BaseTest): pb('12345', '12345') c.clear() pb('\033[6n', ('report_device_status', 6, 0)) - self.ae(c.wtcbuf, b'\033[2;1R') + # A pending wrap reports the last column, as xterm does. Kitty + # reports the start of the next line. + self.ae(c.wtcbuf, b'\033[1;5R') c.clear() s.cursor_key_mode = True pb('\033[?1$p', ('report_mode_status', 1, 1)) @@ -815,8 +817,9 @@ class TestParser(BaseTest): self.ae(str(s.line(0)), ' ') s.reset() pb('\t\033[b', ('screen_tab',), ('screen_repeat_character', 1)) - # The terminal includes blank tab padding in its line text. - self.ae(str(s.line(0)).rstrip(' '), '\t') + # HT only moves the cursor, as in xterm. Kitty writes a tab cell + # there. REP then has no graphic character to repeat. + self.ae(str(s.line(0)), '') self.ae(s.cursor.x, 7) self.ae(s.cursor.y, 0) s.reset() |
