diff options
| author | sl0p <sl0p@sl0p.foo> | 2026-08-13 22:26:02 +0200 |
|---|---|---|
| committer | sl0p <sl0p@sl0p.foo> | 2026-08-13 22:26:02 +0200 |
| commit | 34fcd16e59e3087e9bf84ebce4e05d439eea9198 (patch) | |
| tree | e07b9dfc235e3a0b67047d59a9c521c6e98a28ae /Makefile | |
| parent | sl0ptty: input decoder + per-pane re-encode (diff) | |
| download | slosh-34fcd16e59e3087e9bf84ebce4e05d439eea9198.tar.gz slosh-34fcd16e59e3087e9bf84ebce4e05d439eea9198.tar.xz slosh-34fcd16e59e3087e9bf84ebce4e05d439eea9198.zip | |
sl0ptty: M0.5 — the headless driver and the harness everything rests on
--script runs the whole compositor with no tty: commands in (send, raw,
settle, resize, snapshot, alive), composited screen out as JSON — rows of
text, style runs, cursor, and the hit list.
Styles are emitted as runs rather than per-cell objects, because a test wants
'columns 0..5 of row 0 are bold red', not 1920 objects.
The hit list is empty until M1 paints something clickable, but the type, the
JSON, and hit_test() exist now: one geometry, established before there is
anything to get wrong.
Also fixes two host-policy defaults found by the cursor never appearing.
lib-vt is a VT library, not a terminal, so it starts with DECTCEM (mode 25)
off and grapheme clustering (2027) off. Both are now set via MODE_DEFAULT, so
they survive RIS.
tests/harness.py + tests/test_screen.py: 19 checks over composition, styling,
wide chars/clusters, scrollback, resize and the full input round trip —
including the kitty/legacy re-encoding matrix, which no longer needs a pty.
make test is now 2.4s for 59 checks; make test-live keeps the four that
genuinely need a tty.
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -18,7 +18,7 @@ SRC := $(wildcard src/*.c) OBJ := $(SRC:src/%.c=build/%.o) BIN := build/sl0ptty -.PHONY: all clean vendor run test smoke help +.PHONY: all clean vendor run test test-live test-all smoke help .DEFAULT_GOAL := help help: ## show this @@ -46,13 +46,18 @@ TEST_BIN := build/input_test $(TEST_BIN): tests/input_test.c src/input.c $(VT_LIB) | build $(CC) $(CFLAGS) tests/input_test.c src/input.c $(VT_LIB) -o $@ -test: $(BIN) $(TEST_BIN) ## run unit + live checks +test: $(BIN) $(TEST_BIN) ## unit + headless checks (fast) ./$(TEST_BIN) @echo + cd tests && python3 test_screen.py + +test-live: $(BIN) ## the checks that need a real tty (slow) python3 tests/live_m0.py @echo python3 tests/live_input.py +test-all: test test-live ## everything + smoke: $(BIN) ## compose a screen headlessly and print it ./$(BIN) --headless --cols 40 --rows 6 -- /bin/sh -c 'printf "hello \033[1;32msl0ptty\033[0m\n"; echo "wide: 日本語"' |
