ci: make the DiagROM boot smoke actually run#171
Merged
Conversation
The diagrom-smoke job has never executed, for three stacked reasons: - It was gated on a DIAGROM_URL repository variable that was never set, so the job silently skipped on every run. - Even with the variable set, the fetch step saved whatever the URL serves directly as diagrom.rom, but diagrom.com only serves zip archives; there is no raw ROM URL upstream. - The boot step relied on the old ./diagrom.rom default ROM lookup, which was removed when the bundled AROS ROM became the no-argument fallback, so the run would not have booted DiagROM anyway. The job now runs unconditionally: it downloads the official stable V1.3 archive (checksum-pinned and cached across runs so the author's site is hit roughly once), extracts the emulator-usable DiagROM image, and boots it as an explicit positional ROM. DIAGROM_URL remains as an optional override should the official URL move. The smoke assertion is now DiagROM's version banner on the serial port (routed to stdout), which proves the ROM's boot code executed; the previous non-empty-PNG check passed even for a black screen. The job then runs the asset-gated diagrom image-regression test, which is repaired here as well: it depended on the same removed ./diagrom.rom default, and its 6s screenshot predates the current default machine (512K chip + 512K slow), where memory detection plus the serial-mode countdown still own the screen at that point. It now passes the ROM positionally and screenshots the main menu at 35s, which is reached at ~28s and then stays put, asserting the yellow status-bar text at the left margin of the full-overscan frame.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The
diagrom-smokeCI job has never executed, for three stacked reasons:vars.DIAGROM_URL, a repository variable that was never set, so the job silently skipped on every run.diagrom.rom, but diagrom.com only serves zip archives (there is no raw ROM URL upstream, and the GitHub repo holds source only)../diagrom.romdefault ROM lookup, which was removed when the bundled AROS ROM became the no-argument fallback. Even a correctly fetched ROM would not have been booted.The local ignored test
diagrom_menu_preserves_left_margin_text_columnswas broken by the same removed default, and its 6s screenshot expectation predates the current default machine (512K chip + 512K slow), where DiagROM's memory detection plus serial-mode countdown still own the screen at that point.Changes
.github/workflows/ci.yml-- the job now runs unconditionally:actions/cache, so the author's site is hit roughly once rather than per-run.DIAGROM_URLremains as an override should the official URL move. The ROM is deliberately not committed: the author keeps distribution to the official site.DiagROM/DiagROM, the emulator-usable image per the archive's Readme, and boots it as an explicit positional ROM.Amiga DiagROM V1.3 ...) arriving over the emulated serial port on stdout -- this proves the ROM's boot code executed, where the previoustest -s diag.pngpassed even for a black screen. The serial log is uploaded alongside the screenshot artifact.tests/image_regression.rs-- the ignored test now passes the ROM positionally and screenshots the main menu at 35s (reached at ~28s on the default machine, then static while waiting for input), asserting the yellowSerial:status-bar label at the left margin of the full-overscan frame (230 pure-yellow pixels measured; threshold 100).Verification
All steps were run locally end-to-end:
a575f8fa..., extracted ROM1803bfff...).cargo test --release --locked --test image_regression diagrom -- --ignoredpasses (menu screenshot pixel-identical at 30s and 40s).cargo fmt --checkandcargo clippy --release --testsclean.