Skip to content

Run the headless Jolt tests on the engine test framework (PH-F36) - #3

Merged
PlasmaDev5 merged 5 commits into
mainfrom
feature/ph-f36-slice1
Nov 10, 2026
Merged

PlasmaDev5 merged 5 commits into
mainfrom
feature/ph-f36-slice1

Conversation

@PlasmaDev5

@PlasmaDev5 PlasmaDev5 commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Makes the headless Jolt tests (PH-F36, first slice) a real gate: JoltTest now runs on the engine test framework, passes on Windows and Linux, and is picked up by the engine repository's "Build and test" workflow.

Changes

  • Tests (Tests/)
    • The custom JoltTests.exe harness becomes JoltTest on plTestFramework, the framework CoreTest and RendererTest use. Same flags, JSON report, file and line on failures and a real shutdown, so it works on Linux too.
    • 13 new sub-tests: pyramid at 30/60/144 fps, removing the base of a sleeping tower, a fast box with CCD, a layer that does not collide with itself, triggers and layers, a body made of two shapes crossing a trigger, leaving one shape of a compound trigger, two bodies in one trigger, a body deleted inside a trigger, ray and sweep hit data (including a rotated box), box overlaps away from the origin, and triggers versus query shape types.
    • Checks for known bugs use OpenDefect("PH-B14", ...). They warn and are listed at the end of the run, and -joltStrictDefects makes them fail. Today: PH-B12, PH-B13, PH-B14, PH-B15, PH-B32 and one unlisted gap (a sleeping box is not woken when the body under it is deleted).
    • PH-B20, PH-B21, PH-B43 and one PH-B32 check already passed, so they are regular checks now. Two lines that asserted the PH-B13 bug as correct are now an open-defect check.
    • jolt-tests.yml is manual only: it waited 24 hours for a self-hosted runner that does not exist on every run so far.
  • Plugin runtime (two !B commits)
    • JoltJobSystem: the destructor waits for the task groups of started jobs. The framework shuts core systems down after each sub-test, destroying the job system while a worker thread was still running the last task's completion callback. On Linux that crashed about 1 run in 4.
    • -Wl,-Bsymbolic for the plugin on Linux: a host that also contains Jolt (the test executable) otherwise takes over the plugin's calls into Jolt, with its own copy of Jolt's global state.
  • !B Bind Jolt cloth materials in mesh render data is cherry-picked from !B Bind cloth materials after loading GPU material data #2 because the engine's pin already depends on it. Drop it here if !B Bind cloth materials after loading GPU material data #2 lands first.

Tested locally

Run Result
Windows Development, 13 runs all exit 0, 58 sub-tests
Windows Debug, full suite, and a 60 s soak pass
Linux (WSL Ubuntu), 60 runs all exit 0
Through the engine scripts at a fresh clone of this branch, Windows JoltTest Passed 0

Not run

  • The hosted GitHub workflow, Linux Debug and Release, and the ten minute R0 soak.
  • The fast box with CCD also ends above the slab without CCD, so that test does not prove CCD is what holds it.
  • The engine side is a separate PR that pins this branch and depends on the open NW-F01 CI PR.

View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@PlasmaDev5
PlasmaDev5 merged commit 0d56810 into main Nov 10, 2026
@PlasmaDev5
PlasmaDev5 deleted the feature/ph-f36-slice1 branch November 10, 2026 19:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant