test: repair source fixtures after recent main merges #2648

Merged
mooki000 merged 6 commits from test/main-source-fixtures into main 2026-11-12 04:24:59 +00:00
mooki000 commented 2026-11-12 04:15:11 +00:00 (Migrated from github.com)

What this is for: restore ten game-free checks whose extracted fixtures or expectations no longer match intentional changes on main; main's CI log shows these failures. What is measured: those ten checks on Linux with GCC 16.2.1 and Clang 23.1.3, plus the strict full suite and deliberate regression mutations, as detailed below. Not measured: a game run, Windows execution, audio output or GPU behavior; no production file changes in this diff.

Cause and changes

Each row is a separate commit, naming the change that made the fixture stale; the quoted diagnostics come from main's failed jobs.

Introduced by Checks / CI diagnostic Repair
#1544, after #2042's switch helper audio_aux, audio_biquad: implicit declaration of function ‘env_on’ Include the real helper before the extracted DSP.
#2116 display_startup_failure, wayland_libdecor_hint: use of undeclared identifier 'window_title' Extract the real title helper along with its callers.
#1906 texel_buffer_ownership: use of undeclared identifier 'dead_import_bytes' Model the counter and check that it stays charged until completion.
#2458 readback_part: extraneous closing brace ('}') Select the complete wait_recorded definition, not its new forward declaration.
#2574 dlss_checks: FAIL under a third wide at line 40; framegen_preset / rumble_menu: undeclared temporal_reset_failure Check both sides of the intended two-pixel tolerance; supply a counted reset hook and exercise the real scaling rows.
#2435 mods_size_table: undefined reference to hos_xinput_pads Supply the fixture's no-controller answer; retain real merge and routing checks.

The diff retains the existing assertions: no check is deleted or skipped, and it does not revert the production behavior named above.

How it was tested

Recorded on 2026-11-11, Linux kernel 7.2.15-1-omarchy; base de866017, head eeb09c09, GCC 16.2.1 and Clang 23.1.3 (compiler version output and test records).

  • Untouched main a016b7a6: 455 passed, 15 failed, 20 skipped; each of these ten failures also reproduced alone with both compilers, matching the linked CI diagnostics.
  • Branch: all ten repaired checks pass independently with each compiler (python -I -B tests/run_all.py --strict --jobs 1 <test> records).
  • Negative controls: 14 deliberate source regressions were each rejected with both compilers, without a compile failure—28 behavioral rejections (mutation records). These remove Aux sizing, biquad filtering, startup failure handling, the libdecor hint, view ownership release, part-specific waits, preset preservation, temporal reset or mod-table routing; the DLSS controls independently make each axis's tolerance too narrow and too broad.
  • One full python -I -B tests/run_all.py --strict run: 464 passed, 6 failed, 20 skipped in 141 s, 32 workers, load 7.24 → 28.38 (complete suite output).

Remaining failures and the path to green

The complete branch run names these six failures; the first five are outside this fixture-only diff:

Remaining check Separate fix
test_env_on.py fix/capture-switch-values: the three presence-only capture switch reads from #2437.
test_linux_docker_packages.py test/docker-ppa-options: distinguish --no-update from its PPA operand.
test_mouse_native.py fix/mouse-camera-handover: discard retained angles while another camera owns the view.
test_menu_i18n.py fix/menu-hint-translations: update three complete hint keys and their translations.
test_hdr_encode.py Already repaired in #2614; deliberately not duplicated here.
test_release_scripts.py An intermittent, unchanged release-script concurrency failure: SHA256SUMS still differs from the files after 5 uploads. It passed untouched main and current main CI; isolated reruns passed once and failed once. Neither run invokes a C/C++ compiler.

Not tested / risks

No Windows, game, display, controller, listening or GPU run was performed; the evidence above is game-free only. The fixture extraction still follows source structure, so future helper/signature changes must update its inputs rather than remove its behavioral guards.

Overlaps

The inspected merge hunks overlap #1834's frame-generation fixture helpers and #2622's older readback extraction; neither contains these repairs. #2614 owns the separate HDR initializer check. Other same-file changes merge cleanly in the recorded overlap comparison.

Assisted-by: GPT-6 Astra
Co-Authored-By: GPT-6 Astra [email protected]

**What this is for:** restore ten game-free checks whose extracted fixtures or expectations no longer match intentional changes on main; [main's CI log](https://github.com/NotRexed/Hookshot/actions/runs/43151254256) shows these failures. **What is measured:** those ten checks on Linux with GCC 16.2.1 and Clang 23.1.3, plus the strict full suite and deliberate regression mutations, as detailed below. **Not measured:** a game run, Windows execution, audio output or GPU behavior; no production file changes in this diff. ## Cause and changes Each row is a separate commit, naming the change that made the fixture stale; the quoted diagnostics come from [main's failed jobs](https://github.com/NotRexed/Hookshot/actions/runs/43149508038). | Introduced by | Checks / CI diagnostic | Repair | |---|---|---| | #1544, after #2042's switch helper | `audio_aux`, `audio_biquad`: `implicit declaration of function ‘env_on’` | Include the real helper before the extracted DSP. | | #2116 | `display_startup_failure`, `wayland_libdecor_hint`: `use of undeclared identifier 'window_title'` | Extract the real title helper along with its callers. | | #1906 | `texel_buffer_ownership`: `use of undeclared identifier 'dead_import_bytes'` | Model the counter and check that it stays charged until completion. | | #2458 | `readback_part`: `extraneous closing brace ('}')` | Select the complete `wait_recorded` definition, not its new forward declaration. | | #2574 | `dlss_checks`: `FAIL under a third wide at line 40`; `framegen_preset` / `rumble_menu`: undeclared `temporal_reset_failure` | Check both sides of the intended two-pixel tolerance; supply a counted reset hook and exercise the real scaling rows. | | #2435 | `mods_size_table`: `undefined reference to hos_xinput_pads` | Supply the fixture's no-controller answer; retain real merge and routing checks. | The diff retains the existing assertions: no check is deleted or skipped, and it does not revert the production behavior named above. ## How it was tested Recorded on 2026-11-11, Linux kernel `7.2.15-1-omarchy`; base `de866017`, head `eeb09c09`, GCC 16.2.1 and Clang 23.1.3 (compiler version output and test records). - Untouched main `a016b7a6`: `455 passed, 15 failed, 20 skipped`; each of these ten failures also reproduced alone with both compilers, matching the linked CI diagnostics. - Branch: all ten repaired checks pass independently with each compiler (`python -I -B tests/run_all.py --strict --jobs 1 <test>` records). - Negative controls: 14 deliberate source regressions were each rejected with both compilers, without a compile failure—28 behavioral rejections (mutation records). These remove Aux sizing, biquad filtering, startup failure handling, the libdecor hint, view ownership release, part-specific waits, preset preservation, temporal reset or mod-table routing; the DLSS controls independently make each axis's tolerance too narrow and too broad. - One full `python -I -B tests/run_all.py --strict` run: **`464 passed, 6 failed, 20 skipped in 141 s`**, 32 workers, load 7.24 → 28.38 (complete suite output). ### Remaining failures and the path to green The complete branch run names these six failures; the first five are outside this fixture-only diff: | Remaining check | Separate fix | |---|---| | `test_env_on.py` | `fix/capture-switch-values`: the three presence-only capture switch reads from #2437. | | `test_linux_docker_packages.py` | `test/docker-ppa-options`: distinguish `--no-update` from its PPA operand. | | `test_mouse_native.py` | `fix/mouse-camera-handover`: discard retained angles while another camera owns the view. | | `test_menu_i18n.py` | `fix/menu-hint-translations`: update three complete hint keys and their translations. | | `test_hdr_encode.py` | Already repaired in #2614; deliberately not duplicated here. | | `test_release_scripts.py` | An intermittent, unchanged release-script concurrency failure: `SHA256SUMS still differs from the files after 5 uploads`. It passed untouched main and current main CI; isolated reruns passed once and failed once. Neither run invokes a C/C++ compiler. | ## Not tested / risks No Windows, game, display, controller, listening or GPU run was performed; the evidence above is game-free only. The fixture extraction still follows source structure, so future helper/signature changes must update its inputs rather than remove its behavioral guards. ## Overlaps The inspected merge hunks overlap #1834's frame-generation fixture helpers and #2622's older readback extraction; neither contains these repairs. #2614 owns the separate HDR initializer check. Other same-file changes merge cleanly in the recorded overlap comparison. Assisted-by: GPT-6 Astra Co-Authored-By: GPT-6 Astra <[email protected]>
hckrman101 (Migrated from github.com) approved these changes 2026-11-12 04:24:24 +00:00
hckrman101 (Migrated from github.com) left a comment

Thanks, this is a useful cleanup. I checked each repair against current main (the PR is 0 commits behind):

  • audio_aux / audio_biquad: including hookshot_env.h gives the extracted DSP the real env_on, no stub.
  • display_startup_failure / wayland_libdecor_hint: window_title is a static helper in display_sdl.c now used by both init and window creation, so extracting it with its callers is the right fix.
  • texel_buffer_ownership: dead_import_bytes is the real counter from vk_memory.cpp, and the new asserts (still 64 before the fence passes, 0 after) check the decrement in reap_mirrors instead of just making it compile.
  • readback_part: matching the full definition signature skips the new forward declaration. Fine.
  • dlss_checks: #2574 meant to add the (w + 2) * 3 tolerance, so flipping the old "under a third" negatives is correct. The new pairs (510/509 wide, 286/285 high, 1471x620 vs 1469 / 619 in mode_for) pin the edges on both sides, so a looser or tighter tolerance would both be caught.
  • framegen_preset / rumble_menu: set_row on main resets temporal failures for exactly dlss, resolution and dlss_model. The fixture now uses the real upscaler_rows.h and the three real row definitions, and checks one reset per row and none for preset, frame-gen or rumble. That's stronger than the old stubbed ur namespace.
  • mods_size_table: a hos_xinput_pads that reports no pads fits this routing fixture.

CI: all ten target checks now pass on Linux and Windows. What's still failing (test_env_on, test_menu_i18n, test_hdr_encode, test_linux_docker_packages, test_mouse_native) fails the same way on main's latest run, and the PR body lists it as separate work.

Nit, not blocking: the eviction case in texel_buffer_ownership could also assert that imports_give_back charges dead_import_bytes. That would cover the other half of the accounting #1906 added.

Approving.

Thanks, this is a useful cleanup. I checked each repair against current main (the PR is 0 commits behind): - audio_aux / audio_biquad: including `hookshot_env.h` gives the extracted DSP the real `env_on`, no stub. - display_startup_failure / wayland_libdecor_hint: `window_title` is a static helper in `display_sdl.c` now used by both init and window creation, so extracting it with its callers is the right fix. - texel_buffer_ownership: `dead_import_bytes` is the real counter from `vk_memory.cpp`, and the new asserts (still 64 before the fence passes, 0 after) check the decrement in `reap_mirrors` instead of just making it compile. - readback_part: matching the full definition signature skips the new forward declaration. Fine. - dlss_checks: #2574 meant to add the `(w + 2) * 3` tolerance, so flipping the old "under a third" negatives is correct. The new pairs (510/509 wide, 286/285 high, 1471x620 vs 1469 / 619 in `mode_for`) pin the edges on both sides, so a looser or tighter tolerance would both be caught. - framegen_preset / rumble_menu: `set_row` on main resets temporal failures for exactly `dlss`, `resolution` and `dlss_model`. The fixture now uses the real `upscaler_rows.h` and the three real row definitions, and checks one reset per row and none for preset, frame-gen or rumble. That's stronger than the old stubbed `ur` namespace. - mods_size_table: a `hos_xinput_pads` that reports no pads fits this routing fixture. CI: all ten target checks now pass on Linux and Windows. What's still failing (test_env_on, test_menu_i18n, test_hdr_encode, test_linux_docker_packages, test_mouse_native) fails the same way on main's latest run, and the PR body lists it as separate work. Nit, not blocking: the `eviction` case in texel_buffer_ownership could also assert that `imports_give_back` charges `dead_import_bytes`. That would cover the other half of the accounting #1906 added. Approving.
Commenting is not possible because the repository is archived.
No description provided.