test(linux): the AppImage check looks for the renderer's folder in the image, not among the build tools #624

Open
zeldaootr wants to merge 1 commit from zeldaootr/Longshot:fix-appimage-check-image-lib-folder into main
Contributor

Type: test · Risk: low · Tested on: Linux, no GPU (game-free check) · Needs: none

Why

tests/test_appimage_player_build.py has failed on main since the AppImage stopped carrying a prebuilt renderer (#574), so main is red before a release candidate. The AppImage script is right: the check refused any usr/lib/longshot in it, which also matches where tools.py install puts the build tools outside the image. No open pull request or claim covers it.

How to reproduce

Seen on: Linux (Ubuntu 24.04), no GPU
Settings and switches: none
Steps: on main aa95d35f, run python -I -B tests/test_appimage_player_build.py
Expected: 9 tests OK
Actual: FAILED (failures=1): test_no_prebuilt_renderer: 'usr/lib/longshot' unexpectedly found in scripts/linux/appimage.sh, whose export EMSDK=$TOOLS/usr/lib/longshot/emsdk and S=$TOOLS/usr/lib/longshot/sysroot lines predate #574

What changed

Test-only: the check now refuses $APPDIR/usr/lib/longshot, the image's folder the prebuilt renderer was copied into, instead of any usr/lib/longshot. No product file changes.

  • tests/test_appimage_player_build.py: test_no_prebuilt_renderer asserts "$APPDIR/usr/lib/longshot" is not in appimage.sh. The script from before #574, which made and filled that folder, still fails it (two lines); the build tools' $TOOLS/usr/lib/longshot paths no longer do.

Measurements

Verdict: passes: the check fails on main and passes on this branch in two interleaved rounds.

Hardware: Linux (Ubuntu 24.04, kernel 6.8), x86-64, no GPU used; Python 3.15
Scene: no game: the game-free check (its dry runs of nx2/build.py --standalone --dry-run from a packaged tools folder)
Method: the check run alone, round 1 on main then this branch, round 2 the same again; its unittest failures per run
How to reproduce: python -I -B tests/test_appimage_player_build.py on each commit

Before: main @ aa95d35f After: this PR @ e0c536d7
Failures of 9 cases, round 1 / round 2 1 / 1 0 / 0
main@aa95d35f r1 test_appimage_player_build.py none rc=1 | FAILED (failures=1)
main@aa95d35f r2 test_appimage_player_build.py none rc=1 | FAILED (failures=1)
fix-appimage-check-image-lib-folder@e0c536d7 r1 test_appimage_player_build.py none rc=0 | OK
fix-appimage-check-image-lib-folder@e0c536d7 r2 test_appimage_player_build.py none rc=0 | OK

Flags and settings

None

Testing

Tested: on Linux, the whole check failing on main aa95d35f and passing here in two interleaved rounds (before this rebase, the same on main 6c9edffe at 6f2a98c4); test_no_prebuilt_renderer alone fails at 25726217 (#574's merge), where it was added. The new assertion still catches appimage.sh as it was before #574. The full suite (python -I -B tests/run_all.py, Linux, LONGSHOT_VULKAN_HEADERS set) on main 6c9edffe with this and the six other red-check repairs from the same sweep merged locally (1ba90202, not pushed): 525 passed, 4 failed, 51 skipped. Three of the failures fail on main too and have their own pull requests: tests/test_walk_key.py (#497), tests/test_cpm_discovery.py (#561), tests/test_make_game_cache.py (#592). The fourth, tests/test_crash_record.py, timed out waiting 10 s for a signalled child under load and passes alone, twice. Rebased since onto main aa95d35f, the commit re-authored under the forge's noreply address: its change is identical to before by git patch-id; on aa95d35f the check also ran through the runner with g++ 13.3 and with clang 23.1.5, failing on main and passing here.

Not tested: Windows: TheChecksAreWired runs there too and only reads text; the change is the same on both systems. No AppImage was built.

Must be tested: None

Risks

What could break: only this check: a renderer copied into the image under another path than $APPDIR/usr/lib/longshot would not be caught by this line (the check's other assertions on AppRun and RX_VK_ONLY stay).

Turning it off: revert the commit

Compatibility: Nothing changes

Checklist

Everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description) of the status line's type.
  • Why gives the reason plainly and links the issues that fit (the tracker searched).
  • Measurements has a verdict, or one line saying why there is nothing to measure.
  • Testing names what was tested, what wasn't, and what must still be tested, where and how.
  • Rebased on current main. Onto main 94abdd57 (head e2d38aac) with no conflict, with the commit subjects made Conventional Commits, which CI's lint job now checks for every commit, on a base that has CI's config (#417); each commit's change is the same as before by git patch-id. The commits named in this description are from before this rebase: e0c536d7 is now e2d38aac. Re-run on 94abdd57: test_appimage_player_build fail on main 94abdd57 and pass here, with g++ 13.3 and clang 23.1.5.
  • python -I -B tests/run_all.py passes (any failure that also fails on main is named). The full run is the one in Testing, on main 6c9edffe; after the rebase onto aa95d35f, the changed check through the runner with g++ and clang, as above.
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

When it applies

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.
  • Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
**Type:** test · **Risk:** low · **Tested on:** Linux, no GPU (game-free check) · **Needs:** none ## Why `tests/test_appimage_player_build.py` has failed on `main` since the AppImage stopped carrying a prebuilt renderer (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/574), so `main` is red before a release candidate. The AppImage script is right: the check refused any `usr/lib/longshot` in it, which also matches where `tools.py install` puts the build tools outside the image. No open pull request or claim covers it. ## How to reproduce **Seen on:** Linux (Ubuntu 24.04), no GPU **Settings and switches:** none **Steps:** on `main` aa95d35f, run `python -I -B tests/test_appimage_player_build.py` **Expected:** 9 tests OK **Actual:** `FAILED (failures=1)`: `test_no_prebuilt_renderer`: `'usr/lib/longshot' unexpectedly found` in `scripts/linux/appimage.sh`, whose `export EMSDK=$TOOLS/usr/lib/longshot/emsdk` and `S=$TOOLS/usr/lib/longshot/sysroot` lines predate #574 ## What changed Test-only: the check now refuses `$APPDIR/usr/lib/longshot`, the image's folder the prebuilt renderer was copied into, instead of any `usr/lib/longshot`. No product file changes. - `tests/test_appimage_player_build.py`: `test_no_prebuilt_renderer` asserts `"$APPDIR/usr/lib/longshot"` is not in `appimage.sh`. The script from before #574, which made and filled that folder, still fails it (two lines); the build tools' `$TOOLS/usr/lib/longshot` paths no longer do. ## Measurements **Verdict:** passes: the check fails on `main` and passes on this branch in two interleaved rounds. Hardware: Linux (Ubuntu 24.04, kernel 6.8), x86-64, no GPU used; Python 3.15 Scene: no game: the game-free check (its dry runs of `nx2/build.py --standalone --dry-run` from a packaged tools folder) Method: the check run alone, round 1 on main then this branch, round 2 the same again; its unittest failures per run How to reproduce: `python -I -B tests/test_appimage_player_build.py` on each commit | | Before: main @ aa95d35f | After: this PR @ e0c536d7 | |---|---|---| | Failures of 9 cases, round 1 / round 2 | 1 / 1 | 0 / 0 | ``` main@aa95d35f r1 test_appimage_player_build.py none rc=1 | FAILED (failures=1) main@aa95d35f r2 test_appimage_player_build.py none rc=1 | FAILED (failures=1) fix-appimage-check-image-lib-folder@e0c536d7 r1 test_appimage_player_build.py none rc=0 | OK fix-appimage-check-image-lib-folder@e0c536d7 r2 test_appimage_player_build.py none rc=0 | OK ``` ### Flags and settings None ## Testing **Tested:** on Linux, the whole check failing on main aa95d35f and passing here in two interleaved rounds (before this rebase, the same on main 6c9edffe at 6f2a98c4); `test_no_prebuilt_renderer` alone fails at 25726217 (#574's merge), where it was added. The new assertion still catches `appimage.sh` as it was before #574. The full suite (`python -I -B tests/run_all.py`, Linux, `LONGSHOT_VULKAN_HEADERS` set) on main 6c9edffe with this and the six other red-check repairs from the same sweep merged locally (1ba90202, not pushed): 525 passed, 4 failed, 51 skipped. Three of the failures fail on main too and have their own pull requests: `tests/test_walk_key.py` (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/497), `tests/test_cpm_discovery.py` (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/561), `tests/test_make_game_cache.py` (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/592). The fourth, `tests/test_crash_record.py`, timed out waiting 10 s for a signalled child under load and passes alone, twice. Rebased since onto main aa95d35f, the commit re-authored under the forge's noreply address: its change is identical to before by `git patch-id`; on aa95d35f the check also ran through the runner with g++ 13.3 and with clang 23.1.5, failing on main and passing here. **Not tested:** Windows: `TheChecksAreWired` runs there too and only reads text; the change is the same on both systems. No AppImage was built. **Must be tested:** None ## Risks **What could break:** only this check: a renderer copied into the image under another path than `$APPDIR/usr/lib/longshot` would not be caught by this line (the check's other assertions on `AppRun` and `RX_VK_ONLY` stay). **Turning it off:** revert the commit **Compatibility:** Nothing changes ## Checklist ### Everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`) of the status line's type. - [x] Why gives the reason plainly and links the issues that fit (the tracker searched). - [x] Measurements has a verdict, or one line saying why there is nothing to measure. - [x] Testing names what was tested, what wasn't, and what must still be tested, where and how. - [x] Rebased on current `main`. Onto main 94abdd57 (head e2d38aac) with no conflict, with the commit subjects made Conventional Commits, which CI's lint job now checks for every commit, on a base that has CI's config (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/417); each commit's change is the same as before by `git patch-id`. The commits named in this description are from before this rebase: e0c536d7 is now e2d38aac. Re-run on 94abdd57: `test_appimage_player_build` fail on main 94abdd57 and pass here, with g++ 13.3 and clang 23.1.5. - [x] `python -I -B tests/run_all.py` passes (any failure that also fails on `main` is named). The full run is the one in Testing, on main 6c9edffe; after the rebase onto aa95d35f, the changed check through the runner with g++ and clang, as above. - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### When it applies - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. - [x] Numbers from the same PC, scene and settings, at least 2 interleaved runs each, the median reported.
the AppImage check looks for usr/lib/longshot in the image, not the build tools'
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
6f2a98c42f
Assisted-by: Claude

#574's `test_no_prebuilt_renderer` refused any `usr/lib/longshot` in `appimage.sh`, which also hit `$TOOLS/usr/lib/longshot`, where `tools.py install` puts the build tools outside the image. It now refuses `$APPDIR/usr/lib/longshot`, the folder the prebuilt renderer was copied into.
zeldaootr force-pushed fix-appimage-check-image-lib-folder from 6f2a98c42f
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
to e0c536d7a0
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
2026-11-15 17:12:36 +00:00
Compare
Author
Contributor

Rebased onto main aa95d35f (head e0c536d7); the commits are re-authored with the forge's noreply address: no code change, the same patches by git patch-id.
Test re-run: test_appimage_player_build fails on main aa95d35f (failures=1) and passes here, two interleaved rounds, and through the runner with g++ and clang; the description names the new commit.

Rebased onto `main` aa95d35f (head e0c536d7); the commits are re-authored with the forge's noreply address: no code change, the same patches by `git patch-id`. Test re-run: `test_appimage_player_build` fails on main aa95d35f (failures=1) and passes here, two interleaved rounds, and through the runner with g++ and clang; the description names the new commit.
zeldaootr force-pushed fix-appimage-check-image-lib-folder from e0c536d7a0
Some checks failed
PR description / Description follows the template (pull_request_target) Successful in 4s
CI / Conventional Commit title (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Has been cancelled
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Has been cancelled
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Has been cancelled
CI / Workflow lint (actionlint) (pull_request) Has been cancelled
Guide screenshots / Guide images and local UI source review (pull_request) Has been cancelled
Third-party parts / As their notes say (pull_request) Has been cancelled
Third-party parts / The same as upstream (pull_request) Has been cancelled
Website / Website on Cloudflare (pull_request) Has been cancelled
to e2d38aac5a
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 5s
2026-11-15 19:15:35 +00:00
Compare
Author
Contributor

Rebased onto main 94abdd57 (head e2d38aac), with no conflict; the commit subjects are now Conventional Commits, which CircleCI's lint job checks for every commit of a pull request (#417), and the base has the CI's config, which a fork's pull request needs at its own head. No other change: each commit's change is the same as before by git patch-id.
Re-run on 94abdd57: test_appimage_player_build fail on main 94abdd57 and pass here, with g++ 13.3 and clang 23.1.5. The description names the new commits.

Rebased onto `main` 94abdd57 (head e2d38aac), with no conflict; the commit subjects are now Conventional Commits, which CircleCI's lint job checks for every commit of a pull request (https://git.magicbean.dev/MagicBeanDev/Longshot/pulls/417), and the base has the CI's config, which a fork's pull request needs at its own head. No other change: each commit's change is the same as before by `git patch-id`. Re-run on 94abdd57: `test_appimage_player_build` fail on main 94abdd57 and pass here, with g++ 13.3 and clang 23.1.5. The description names the new commits.
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Guide screenshots / Guide images and local UI source review (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
Website / Website on Cloudflare (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 5s
This pull request doesn't have enough approvals yet. 0 of 1 approvals granted.
Some workflows are waiting to be reviewed.
This branch is out-of-date with the base branch
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'fix-appimage-check-image-lib-folder:zeldaootr-fix-appimage-check-image-lib-folder'
git switch 'zeldaootr-fix-appimage-check-image-lib-folder'
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!624
No description provided.