Repository navigation
Close two holes in the test guards - #960
Merged
Merged
Conversation
The stand-in guard reads only """ blocks, so two LevelRoot stand-ins joined with + passed all three rules. Both tests now use the real LevelRoot. Fixes #957.
A scenario's root is a Node3D and most systems are untyped, so loading the scripts could not see a renamed method. The check also found build-outdoors and save-as skipping their own question behind a has_method or has_signal check. Fixes #958.
saworbit
enabled auto-merge (squash)
October 4, 2026 23:56
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.
Summary
Two holes in the test guards, both P3.
tests/test_level_root_shims.gdreads a script built from source only when it is one"""block. It now refuses any other form. The two stand-ins that hid as joined strings, in the validation and entity I/O vocabulary tests, now use the realLevelRoot. Four other built scripts moved into blocks; the NavigationMesh mock in the bake tests builds its source from the caller's names, so it carries the marker. The tooltip stub usesfollow_gridin place ofgrid_snap, which is a level setting.tests/test_vibe_scenarios_load.gdnow reads eachroot.name(androot.member.name(call in the vibe harness and asks a real level whether it has that name. Renamingvalidate_convexityatgeometry.gd:76fails it and names the file, line and method. GUT time is about 4s.The new check found two scenarios that had stopped asking their question behind a
has_methodorhas_signalcheck:build-outdoorscalledroot.create_default_spawn(), which lives on the spawn system, and looked for the spawn by a meta a DraftEntity does not carry. It now makes one and finds it withget_active_spawn().save-aslistened forhflevel_saved, which ishflevel_save_completednow. It counted no saves, so its check could never fire. It now counts three against three files.Before / After Behavior
+passed the guard, and a renamed level method in a scenario passed CI.Related Issue
Fixes #957
Fixes #958
Checks
python tools/run_local_checks.pypasses (21 passed, 4 not run here)-gselect, and the leak gate is clean on those logspython tools/vibe/run_vibe.py build-outdoors save-asis clean before and afterrun_vibe.py --selftestpassesgit diff --checkis clean