Commit Graph
1354 Commits
Author SHA1 Message Date
Dean b860f46f98 Merge pull request #10533 from al3ss4ndrolb/test/nid-names-env-db-empty-tree
test(tools): look up the environment-selected NID database in an empty source tree
2026-10-25 20:11:21 +13:00
Nathan Desaindes df55659d08 fix(tools): reject malformed NID database rows in stubgen
parse_db silently skipped a row that had no symbol name and accepted any
text as a NID, so a malformed database produced Unknown stubs and
technical-debt lines for NIDs that did have a name, with no hint that the
database was at fault. Reject such rows with a path:line error, the way
parse_nids already rejects malformed NIDs.
2026-10-25 03:06:41 -04:00
spaina93andClaude Opus 5.5 09ae9b3355 test(tools): read git's unknown-ref message in the C locale in progress_history
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 07:58:59 +01:00
MarcZX10 4f078782a1 test(tools): cover unwrap_self segments with stale offsets that cannot be placed 2026-10-25 06:37:02 +00:00
MarcZX10 443388f161 fix(tools): refuse unwrap_self segments placed before the file start 2026-10-25 06:37:02 +00:00
Dean 74986c28bd Merge pull request #10559 from xTRACKGOD/fix/trace-digest-interval-identity
fix(tools): detect host and title changes in interval digests
2026-10-25 19:15:31 +13:00
Dean 282f4a68ae Merge pull request #10744 from Bram910/fix/jobmanager-module-refusals
fix(tools): report refused JobManager modules cleanly
2026-10-25 19:13:56 +13:00
Dean caffb7d8b5 Merge pull request #10474 from hyvvs/fix/check-skips-reasons
fix(ci): reject skips with mixed expected and unexpected reasons
2026-10-25 19:13:27 +13:00
Dean e1ad116e72 Merge pull request #10670 from Bram910/fix/patch-advisor-utf8-io
fix(tools): use UTF-8 for patch advisor I/O
2026-10-25 19:05:39 +13:00
Dean 61c55ed466 Merge pull request #10748 from Bram910/fix/workflow-script-boundaries
fix(tools): match workflow test scripts only as whole paths
2026-10-25 19:04:09 +13:00
Dean 4b31738b2b Merge pull request #10624 from Bram910/fix/library-zip-original-paths
fix(tools): reject rewritten library ZIP paths
2026-10-25 19:02:31 +13:00
Dean 01c8fe6d1e Merge pull request #10586 from hakarrr/patch-1
fix(tools): open the unwrap_self temporary file through io.open
2026-10-25 19:01:55 +13:00
Dean effe283dca Merge pull request #10747 from roboterspinne/fix/tools-check-main-sync-missing-head
fix(tools): name a missing head instead of reporting no common ancestor in check_main_sync
2026-10-25 19:01:23 +13:00
Braxton Atkinson 2f975066cd fix(tools): parse flow-style pull-request filter keys safely 2026-10-24 23:26:59 -05:00
JJenkx 4fba4f896a fix(tools): reject audit reports that overlap the original dump 2026-10-24 23:52:03 -04:00
JJenkx 9ee6bec438 test(tools): restore stale directory permissions before teardown 2026-10-24 23:45:09 -04:00
JJenkxandClaude Opus 5.5 84038e16dd fix(tools): stop when a reused audit work directory cannot be emptied
Removing the generated source and output directories ignored errors, so an
undeletable stale registry survived and was audited with the new run's
registries. Report the failure and return 2 before conversion; remove a link
in place of a generated directory instead of following it.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 23:45:09 -04:00
JJenkx 7ca880d2e4 fix(tools): reject audit work paths overlapping the input dump 2026-10-24 23:45:09 -04:00
JJenkxandClaude Opus 5.5 14f37caae6 fix(tools): empty a reused audit work directory and report broken module links
Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 23:45:09 -04:00
JJenkxandClaude Opus 5.5 aeaa3b58f0 feat(tools): audit an extracted title's imports in one step
Auditing a title before its first run takes several manual steps from
GAME_TESTING: unwrap eboot.bin and every module the title ships with
unwrap_self.py, convert them with relinker --registry (with
--module-dir for Unity's Media/Modules and Media/Plugins, and for
modules beside eboot.bin), and pass every registry and module folder
to import_audit.py. Missing one module folder turns its imports into
false "absent" entries.

tools/audit_dump.py <app0> --relinker <path> --libs <dir> does those
steps into a temporary directory (or --work <dir>), reading the dump
only. A module that is already a plain ELF is copied; one that is
neither a SELF nor an ELF fails the run. It returns import_audit's exit
code, or 2 when unwrapping or conversion fails.

audit_dump covers the module folders and the module-dir list, a
refused module, the relinker command line, the arguments passed to
import_audit, a relinker failure and the argument errors.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-24 23:45:09 -04:00
Andy Ye 29e7edfcfc test(tools): isolate overlap encoding tests from the working directory 2026-10-24 20:36:50 -07:00
Baytowne 0434746d0a fix(tools): fail env_reference on a source file it cannot read 2026-10-24 21:34:51 -05:00
Dean 52a8bed576 Merge pull request #8610 from Baytowne/fix/progress-history-bad-ref
fix(tools): report an unknown ref as a usage error in progress_history
2026-10-25 15:28:14 +13:00
Dean 941ace5f34 Merge pull request #10272 from Felipebmaitan/feat/jobmanager-linux-reference
test(job-manager): run original-module fixtures on Linux
2026-10-25 14:43:13 +13:00
LeandroLP23andClaude Opus 5.5 eb16c4d4e0 test(tools): stop test_progress from measuring the checkout in its write-failure test
test_output_directory_that_cannot_be_written_is_named called progress.main
without a root, so main measured the whole checkout before reaching the
output directory the test checks: 12.8 s of the file's 14.1 s here, and
31 s on windows-latest. It now goes through run_main with
library_snapshot(), like the other progress.main tests in its class;
write_site still runs and fails on the file in place of the directory.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-25 02:18:36 +01:00
Dean 096d770143 Merge pull request #10231 from Felipebmaitan/feat/jobmanager-owned-state
fix(job-manager): keep scheduling state in caller memory
2026-10-25 14:10:59 +13:00
Queuze 08dc9e120e test(check-compile): detect Clang's gcc alias 2026-10-24 21:44:59 -03:00
Queuze e0b90dc054 test(check-compile): detect Clang's gcc alias 2026-10-24 21:39:26 -03:00
Queuze 8a6f7843a2 test(check-compile): split missing operand cases 2026-10-24 21:31:23 -03:00
Queuze 699337abfd fix(check-compile): keep one syntax action 2026-10-24 21:31:23 -03:00
Queuze cea2536efe fix(check-compile): preserve positional inputs 2026-10-24 21:31:23 -03:00
Queuze e5fcbb775d fix(check-compile): enforce syntax mode 2026-10-24 21:31:23 -03:00
Dean 2e22b67032 Merge pull request #9372 from mehmetbayoglu/feat/import-audit-partial
feat(tools): split guarded exports into a partial import_audit class
2026-10-25 13:29:15 +13:00
Queuze 19256fdcf1 test(check-compile): split missing operand cases 2026-10-24 21:26:30 -03:00
Queuze 35a213dd9e test(check-compile): match syntax action order 2026-10-24 21:22:02 -03:00
Queuze d9163726c8 test(check-compile): check nested response modes 2026-10-24 21:20:15 -03:00
Queuze 348c6fd80b test(check-compile): combine syntax fixes 2026-10-24 21:18:08 -03:00
Queuze 5694ca0181 fix(check-compile): keep one syntax action 2026-10-24 21:16:21 -03:00
Queuze 023b6e7948 fix(check-compile): preserve positional inputs 2026-10-24 21:12:22 -03:00
Queuze f560447782 Merge remote-tracking branch 'origin/main' into codex/check-compile-phase-options 2026-10-24 21:10:27 -03:00
Queuze b38b41aa8a fix(check-compile): enforce syntax mode 2026-10-24 21:10:27 -03:00
Felipebmaitan b31ed5dc5b test(job-manager): refresh Linux reference on current prerequisites 2026-10-24 21:06:46 -03:00
Felipebmaitan 8ab682946a fix(job-manager): refresh owned state on current prerequisites 2026-10-24 21:05:40 -03:00
hundoukamandClaude Fable 5.1 147ae14830 fix(tools): place a debt entry by the first core link of its whole entry
The debt-file rule read only the first line of an added entry, so an
entry whose first core/ link sat on an indented continuation line was
rejected in docs/dev/debt/<name>.md and accepted in the index, the
opposite of what debt_split.py does with the same entry. The rule now
joins the continuation lines as debt_split.parse does before naming
the file.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-10-24 17:58:17 -06:00
Dean 17c46a4388 Merge pull request #9150 from gdols/ci/alignas-limit
ci(conventions): reject alignas above the 8192 bytes MinGW allows
2026-10-25 12:57:04 +13:00
memob 1ee2fe9ff9 test(tools): count the partial class in the module suffix audit tests 2026-10-24 19:49:55 -04:00
memob df1a204a4f fix(tools): count a throw inside a plain block as unconditional
A compound statement that is not a conditional, loop or lambda always runs, so its calls are collected like the body's own and its exits stop the scan. An export whose only throw sits in such a block stays a stub and fails a strict audit.
2026-10-24 19:49:14 -04:00
memob d606317bca test(tools): match the stub heading from main in the partial class test 2026-10-24 19:49:14 -04:00
memob 1e123e64ff fix(tools): call an export partial when a conditional exit precedes its throw
A conditional return, co_return or goto before the throwing call leaves a path that succeeds, so the audit stops collecting calls at it and the export, or a helper it calls, is partial. A guard that throws still leaves every path throwing, so it stays a stub.
2026-10-24 19:49:14 -04:00
memob bf358a9486 fix(tools): call an export partial only when some preprocessor branch does not throw
The previous check called any stub call inside an #if block partial,
so an export that throws in every #if, #elif and #else alternative was
reported as partial. Each combination of preprocessor branches is now
expanded into its own body, an #if without #else gets an empty
alternative, and the export is a stub when every combination reaches
the throw. More than 256 combinations in one function, or unbalanced
directives, are reported as errors.
2026-10-24 19:49:14 -04:00