test(vk): restore the framegen resource and module identifier checks #350
No reviewers
Labels
No labels
area/accessibility
area/audio
area/input
area/install
area/menu
area/renderer
area/saves
area/upscaling
good first issue
gpu/amd
gpu/igpu
gpu/intel
gpu/nvidia
help wanted
kind
bug
kind
chore
kind
docs
kind
feature
kind
performance
kind
question
needs measurements
platform/linux
platform/steam-deck
platform/windows
preview
priority
critical
priority
high
priority
low
status
blocked
status
confirmed
status
duplicate
status
invalid
status
needs-info
status
wontfix
testing wanted
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot!350
Loading…
Reference in a new issue
No description provided.
Delete branch "mooki/Longshot:fix/main-test-fixtures-after-252"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
What this is for: Restore two game-free regression checks broken when #252 changed the source they extract. What is measured: Both fail on the named main and pass here with Clang and GCC; deliberately broken source copies still fail. Not measured: Anything in the game, actual Vulkan driver behavior, performance or native Windows execution.
This PR changes no product code. The separate menu-key failure is already repaired by #338, so it is deliberately left out; the pad-layout failure remains with #331.
What changed
tests/test_module_ids.py: identifycomplete_frombybool complete_from(instead of its entire old parameter list. The existing brace walk still limits the check to that function, which must containmodule_id_learned(. The addedbool* busy = nullptrparameter no longer stops the test before its assertions run.tests/framegen_resources_test.cpp, used bytests/test_framegen_resources.py: supply a non-lockingIntelDriverGateand forwarding stand-ins forextern_guarded_shader_moduleandextern_guarded_compute. They model the path outside Intel on Windows and call the existing failure-injecting Vulkan stand-ins, including the pipeline handle returned with an allocation error.Flags and settings
None. No runtime switch, menu row, saved option or default changes.
Measurements
main:
cf605c85bb(2026-11-14)this PR: fix/main-test-fixtures-after-252 @
3c797f8ae7Branch state: on main
cf605c85bbaeaaa78176b933b3bc1a3366e13a78; head3c797f8ae7a747b2f3d79b2fe698a9b20e6306c5; whole game-free suite on this head:542 passed, 1 failed, 16 skipped(maincf605c85bbaeaaa78176b933b3bc1a3366e13a78:540 passed, 3 failed, 16 skipped). The 1 failing test fails on main the same way:tests/test_pad_layout.py. The commits are unchanged by rebases.Hardware: Intel Core i9-13900K, MemTotal 98543612 KiB, Arch Linux with kernel 7.2.15-1-omarchy. An RTX 4090 with driver 615.78.08 is installed but not used by these tests. Clang 23.1.3, GCC 16.2.1, Python 3.14.8, Vulkan-Headers v1.4.345.
Scene: none; extracted source and compiled stand-ins, no game or GPU device.
Method: two rounds in turn (main, this PR, main, this PR) of each changed test with each compiler, one runner worker, behind a shared measurement lock with core dumps suppressed, on 2026-11-13 between 20:57 and 21:53 local (UTC-06); the one-minute load ranged from about 7 to 14. Results are exit status and assertion output, the same in both rounds; they are not speed measurements, so no timing median applies. Separate scratch copies test the two failures and another added default parameter.
How to reproduce: with
RX_CPMpointing to a CPM cache containing the Vulkan headers, run these in each checkout:cf605c85b3c797f8aThe menu rows disclose the original requested check; they are not an after-pass claim for this branch.
The tests still detect the behavior they protect:
complete_from, keeping amodule_id_learned(call in another functiondrop_setup();from framegeninit()'s failure lambdaint = 0, tocomplete_from, without changing its bodyThe parameter control checks extraction and runs the ordinary module-store fixture; it does not compile the whole renderer.
Testing
Tested:
_CRT_SECURE_NO_WARNINGSdefinition sits inside#ifdef _WIN32rather than unconditionally before its first include, while it usesgetenv. The compiler accepts it.542 passed, 1 failed, 16 skippedon this head; maincf605c85b:540 passed, 3 failed, 16 skipped. The two repaired checks pass now; what still fails here fails on main the same way:tests/test_pad_layout.py.Not tested:
tests/test_module_ids.pyandtests/test_framegen_resources.py; cross-target compilation is not execution with the project's Windows compiler/library environment.Needs other testers: None needed to merge: these are game-free fixtures and no product code changes. Running the two repaired tests natively on Windows was not done and is named under Not tested.
Screenshots
Nothing on screen.
Risk and rollback
Risk is confined to test coverage and compiler portability. A marker that searched the whole file could accept learning in the wrong function; the scratch control proves this still fails. A guarded-call stand-in that bypassed failure injection could hide a resource leak; the wrappers retain the existing entry points, and removing rollback still fails after compilation.
The gate stand-in does not test Windows Intel serialization or fault recovery. Reverting these two commits restores the previous fixtures and their main failures; no game state or setting changes.
Reviewer notes
The diff is two test-only commits. The module marker keeps the existing extraction algorithm. The framegen declarations follow the neighboring program-cache fixture's forwarding pattern.
Overlaps
Open PRs were searched before editing and again before handover, including all 117 open PR titles/bodies and the matching candidates' changed files.
c734325a, already keeps the C header's assertions active with their C++ spelling intest_menu_keys.py. That file is left untouched here.bc375c20, supplieshold_toggle.hintest_pad_layout.py; #338 also carries that include. Pad layout is outside this PR.03fff16c, touchesframegen_resources_test.cpponly to addBUILTIN_SPV_ARGSbeside the shader constants. Its inspected hunk is separate and does not supply these guarded-call declarations.Questions for reviewers: none about the implementation; what is not covered is named above.
Issues
See #252, whose changed source exposed the two fixture dependencies. The separate #137 fixture failures remain with #331 and #338; this PR does not claim to fix them.
Checklist
For everyone
type(scope): description).main.python -I -B tests/run_all.pyrun and passing (any failure that also fails onmainis named above).third_party/untouched (a new folder with aPROVENANCE.mdinstead).If applicable
Assisted-by:/Co-Authored-By:trailers.tests/that reads changed source updated in this PR, not weakened.Assisted-by: GPT-6 Astra
Co-Authored-By: GPT-6 Astra [email protected]
New on this forge; not opened on GitHub.
WIP: test(vk): restore the framegen resource and module identifier checksto test(vk): restore the framegen resource and module identifier checksReviewed
3c797f8ae7against current main0caf06184b. No blocking finding; these restore the existing checks without weakening their assertions.Independently reproduced main's stale complete_from signature failure and the framegen fixture's missing IntelDriverGate/guarded-call declarations. On the PR combined locally with current main, module-ID and framegen-resource checks pass with both GCC and Clang. Used repository-pinned Vulkan-Headers v1.4.345 (74d8a6cb930c68ef617b202c3ff3c59d919e086b), headers only. Current-main merge simulation is clean.
Checked that guarded-call stand-ins forward to the existing failure-injecting allocators, including the owned pipeline handle returned with an allocation error. Independent negative controls: removing module_id_learned from complete_from still fails even with a call elsewhere; removing init's drop_setup rollback compiles then fails live.empty() with GCC. The wider signature marker remains bounded by the existing function brace walk.
Scope: focused game-free regression review. The gate stand-in covers the non-serializing path only; no native Windows, Intel serialization, real driver fault, GPU/game or full-suite run by this reviewer. No product code changes. Assisted-by: Codex (OpenAI).