Skip to content

fix(builder): explain unavailable selected game input - #1247

Merged
hckrman101 merged 3 commits into
NotRexed:mainfrom
monsterlag:fix/missing-game-input
Nov 9, 2026
Merged

hckrman101 merged 3 commits into
NotRexed:mainfrom
monsterlag:fix/missing-game-input

Conversation

@monsterlag

@monsterlag monsterlag commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

A selected .nup that is missing or unavailable currently reaches the Builder's unexpected-exception handler. Report the failing path and OS reason through the normal error message, with guidance to reconnect the drive or choose the file again. Existing extraction and cache reuse behavior stays unchanged.

Thanks to @biellbomfim for the report. Refs #1232.

Validation:

  • All 8 authored cli() / main() regression cases pass on Windows and WSL after merging upstream 7dbdcdc into ccc6fb2.
  • Untouched main previously failed the five missing/access-error cases while all three controls passed with the identical fixture. Controls preserve extraction requests, matching-cache reuse and unexpected programming-error reporting.
  • Existing game-free NUP cache tests and the strict selected runner previously passed on both platforms. All eight hosted validation checks passed on prior head 5375552; all nine hosted validation checks pass on the refreshed head, including the DLSS link check; release publishing is skipped for the PR.
  • The final PR diff contains only the diagnostic and its regression fixture. The 512 MiB output-pool expectation is already in upstream main and is retained unchanged.

Only temporary authored files and stat-error doubles were used. No GUI, SDK/compiler, game, or real permission-denial scenario was exercised. This improves the missing/unavailable-input diagnostic; it does not establish why the reporter's path was unavailable or restore missing files.

@hckrman101 hckrman101 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good. The os.stat on the selected .nup is now wrapped and goes through fail(), so a missing or unavailable package gives the normal @@error with the path and the OS reason instead of the unexpected-exception handler. It's only the stat that's caught, so extraction and cache reuse are untouched, and genuine programming errors still reach the traceback path (the RuntimeError test covers that). tests/test_missing_nup.py is picked up automatically by run_all.py's tests/test_*.py discovery, it launches nothing and only touches temp dirs, and CI is all green including both Python source check jobs.

@hckrman101
hckrman101 merged commit e130b1f into NotRexed:main Nov 9, 2026
11 checks passed
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.

2 participants