fix(builder): the Python setup checks the setup list as setup.c does #2057
No reviewers
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
question
testing wanted
wontfix
No milestone
No assignees
1 participant
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Hookshot!2057
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/setup-list-validation"
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?
The Python builder takes the setup list's names and checksums as they come, so a list with a
..or absolute tag makesinstall()remove that folder before any checksum is checked.setup.calready refuses such a list.read_manifestchecks the tag, folder names and checksums bysetup.c'slist_name_okrules before anything is removed.read_manifestturns a non-numeric part size into aSetupError, so the Builder shows its usual error.reuse_partmatches a checksum inparts.txtexactly, not as a substring, and skips a cached version name that fails the same rules.Part of #2045 (item 3).
Both setup-list tests passed on Windows and Ubuntu at
883d6e64. I closed my overlapping #2060. Two small follow-ups from that work may fit here: translate a nonnumeric part size intoSetupErrorso the Builder can display the usual error, and validate the cached version name before using it for part reuse. The published stable, RC1 and Nightly lists each had eight parts in the compatibility check.@Arkex-ai sure sounds good, i will add both. Appreciate the review!
added
Looks good. I compared
list_name_ok/list_okwithsetup.cand they match: same character set, no empty,.or..part, no leading root, a.dest or-from/to allowed, 64 lowercase hex checksum, https only. Python does not use therunline, so skipping that check is fine. Both follow-ups @Arkex-ai asked for are in: a non-numeric part size becomes aSetupError, and the cached version name is checked beforereuse_partuses it. The exact-checksum match via.split()is right, andtests/test_setup_list_names.pycovers the refusals and the reuse case (it passes on Linux and Windows).CI: the red Python source checks are
test_make_game_ngx.py(Linux, aswitchingattribute on a SimpleNamespace) andtest_pipeline_state_portable.py(Windows,fopendeprecation under -Werror). Neither touches this PR's files, so they are not caused by it.Nit, no change needed: the new test file has no trailing newline.
github-sync referenced this pull request2026-11-12 06:22:54 +00:00