← Jobs
failure

test ant/term ↗

main @ c31de3063edceec1c6fd101f2afb653da7555efa · pipeline test #34 → · 2 more pipelines from this commit →
started 17 Sep 2026 11:01 UTC · ran for
10s, success 9s, success 10s, success 10s, success 12s, success 13s, success 13s, success 12s, success 12s, success 12s, success avg 11s ± 1s over the last 10 runs
fix: e2e tests corrupted by bash's readline echo on a readline /bin/sh e2e_start disables the pty's kernel ECHO flag so a test's own "typed" command text doesn't leak into the output stream ahead of the command's real output — but on a system where /bin/sh is (a symlink to) bash built with readline, e.g. NixOS's default, bash's readline echoes back whatever it reads using its own redisplay logic, entirely independent of that kernel flag. Reproduced deterministically (100% of runs, single test, single thread — not a timing race) on a NixOS host: fragments of a test's own command/marker text (e.g. "IL" from "ILDONE1", "D" from "ICDONE2") showed up at the position readline echoed them to, instead of the real escape-sequence-driven content, failing test_e2e_char_editing, test_e2e_line_editing, and test_e2e_tmux_secondary_da_no_corruption. Never reproduced on a dash /bin/sh (no built-in line editing to race with), which is what this dev environment and CI's earlier local testing both happened to have. `set +o emacs +o vi` is bash's documented way to fall back to reading input without readline; dash has neither option and just errors harmlessly on stderr (already discarded, same as the PS1 assignment right after it). Sent unconditionally before the READY handshake so it applies regardless of which shell /bin/sh actually resolves to. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KpDBFeBQKx9f5U3pfVeVV3
$ test failure · exit 1 · raw
++ mktemp -d
+ checkout=/tmp/tmp.AX4nIXNboA
+ trap 'rm -rf "$checkout"' EXIT
+ cp -R /var/lib/ci-tron/sources/ca23c1dcc47c1302/. /tmp/tmp.AX4nIXNboA
+ cd /tmp/tmp.AX4nIXNboA
+ nix develop --command odin test . -all-packages
GC Warning: Could not open /proc/stat
[INFO ] --- [2026-09-17 11:01:52] Starting test runner with 12 threads. Set with -define:ODIN_TEST_THREADS=n.
[INFO ] --- [2026-09-17 11:01:52] The random seed sent to every test is: 832985144387712. Set with -define:ODIN_TEST_RANDOM_SEED=n.
[INFO ] --- [2026-09-17 11:01:52] Memory tracking is enabled. Tests will log their memory usage if there's an issue.
[INFO ] --- [2026-09-17 11:01:52] < Final Mem/ Total Mem> < Peak Mem> (#Free/Alloc) :: [package.test_name]
term: --class requires an argument
usage: term [--class <app_id>] [--working-directory <dir>] [-e <command> [args...]]
term: -e requires a command
usage: term [--class <app_id>] [--working-directory <dir>] [-e <command> [args...]]
term: --working-directory requires an argument
usage: term [--class <app_id>] [--working-directory <dir>] [-e <command> [args...]]
term: unknown flag "--bogus"
usage: term [--class <app_id>] [--working-directory <dir>] [-e <command> [args...]]
[ERROR] --- [2026-09-17 11:02:01] [e2e_tmux_test.odin:33:test_e2e_tmux_secondary_da_no_corruption()] expected e2e_pump_until(&e, "$ ") to be true
[ERROR] --- [2026-09-17 11:02:01] [e2e_tmux_test.odin:34:test_e2e_tmux_secondary_da_no_corruption()] expected e.grid.in_alt to be true, got false
[ERROR] --- [2026-09-17 11:02:01] [e2e_tmux_test.odin:37:test_e2e_tmux_secondary_da_no_corruption()] expected e2e_pump_until(&e, "\x1b[?1049l") to be true
[ERROR] --- [2026-09-17 11:02:01] [e2e_tmux_test.odin:50:test_e2e_tmux_secondary_da_no_corruption()] expected vt.at(&e.grid, 0, before_y)^.ch to be [, got s
Finished 254 tests in 8.580471961s. 1 test failed.
- main.test_e2e_tmux_secondary_da_no_corruption expected vt.at(&e.grid, 0, before_y)^.ch to be [, got s
To run only the failed test, use:
-define:ODIN_TEST_NAMES=main.test_e2e_tmux_secondary_da_no_corruption,
If your terminal supports OSC 52, you may use -define:ODIN_TEST_CLIPBOARD to have this copied directly to your clipboard.
+ rm -rf /tmp/tmp.AX4nIXNboA
Artifacts

no artifacts