From 93aebb5019877042fc1834fd1075761f0c9089fe Mon Sep 17 00:00:00 2001 From: saphid <4596216+saphid@users.noreply.github.com> Date: Sun, 27 Sep 2026 17:22:20 +1000 Subject: [PATCH] Fix the review's findings in the test harness Headset smoke test: drop the paired key from authorized_keys with a same-mode copy swapped in, so a failed write can't truncate it; check the throwaway key with no ssh_config or agent; clean up idempotently (tracked and leftover titles, their json files, Steam's shortcuts via steamos-delete, and ~/devkit-utils if it wasn't there before), with a failed cleanup a failed step; count a launch only with fresh evidence (the process, Steam's log, or the known missing-runtime line), matching with [d]evkit-game so pgrep doesn't find its own shell. The test programs sleep 10 s. Fake Frame: log a launch before its reaper can look for it. e2e: kill a pairing client's process group when a test ends; accept an aarch64 program running under QEMU on x86 hosts. Co-Authored-By: Claude Opus 5.5 (1M context) --- docs/testing.md | 14 +- tests/e2e/test_pairing.py | 14 +- tests/e2e/test_titles.py | 11 +- .../usr/local/lib/fakeframe/fakesteam.py | 57 +++---- tests/smoke/frame_smoke.py | 141 ++++++++++++++---- tests/smoke/tiny_programs.py | 2 +- 6 files changed, 173 insertions(+), 66 deletions(-) diff --git a/docs/testing.md b/docs/testing.md index e70a4a7..c95ee75 100644 --- a/docs/testing.md +++ b/docs/testing.md @@ -111,9 +111,17 @@ scripts/frame-smoke.sh --pair # also pairs a throwaway key: approve it in the It checks `properties.json` and the status, then installs, launches and removes three tiny titles built from bytes by `tests/smoke/tiny_programs.py` -(an ARM64 and an x86-64 static Linux program that sleep for five seconds, and -an x86-64 `.exe` that exits at once), keeping what Steam logged about each. -Everything it installs is removed again, also after a failure. Results go to +(an ARM64 and an x86-64 static Linux program that sleep for ten seconds, and +an x86-64 `.exe` that exits at once). A launch passes only with fresh evidence: +the ARM64 program running, the `.exe` started (its process or Steam's log), +and the x86-64 program running or Steam logging that its runtime isn't +installed, which is what the Frame does today. Steam's log lines about each +title are kept. + +Everything it installs is removed again, also after a failure: the titles and +their Steam shortcuts, a paired key, and `~/devkit-utils` if it wasn't there +before (if it was, it stays, synced to this checkout as Frame Control always +does). A cleanup that fails counts as a failed step. Results go to `tests/smoke/results/