unwrap_self copies one output region per PT_LOAD and nothing required the
regions to be disjoint in the input. Only the alignment padding was capped, so
200 PT_LOADs that all point at the same 2 MiB of a 2 MiB container produced
400 MiB, and the 65535 program headers the parser accepts could ask for
hundreds of gigabytes, ending in MemoryError or an OOM kill instead of a
Refused message.
The output size is now checked before the buffer is allocated. It may be up to
four times the container, and never less than 256 MiB.
test_library_directory_values_can_look_like_modes passed -L -E as mode
flags, so check_modes took the -E for a preprocessing mode and dropped -c.
Its control commands linked an executable with each compiler, which on
the Windows runner goes through link.exe; the case took about twice as
long as its -I -E counterpart and timed out in 6 Windows CI jobs. The
-L -E pair now goes through configure like the include directory case,
so the control only compiles. The command check_compile checks is the
same, since it drops -c.
test_response_options_compile_without_changing_build_outputs ran 30
check_compile invocations in one case. Its six response files are now
checked by three cases of two.
The round trip configures with -G Ninja but only skipped when CMake was
missing, so it errored on hosts without Ninja. Require both, like the
other configure seed project tests.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Path.write_text(newline=...) needs Python 3.10, and the Python tests run from 3.9. write_bytes writes the LF text unchanged on every version.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
Path.write_text translates "\n" to the platform newline, so on native
Windows Python the committed fixture held CRLF and the checker counted
the carriage return: 1080 characters instead of 1079.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
conventions_ci_gate built a git repository and ran check_conventions.py
as a subprocess for each of its 35 checks, and took 40.57 s in the
Windows relinker CI job 122160160306. CONTRIBUTING.md requires every
test to finish in 30 s and to be shrunk when it gets close. The test now
commits each case as its own workflow file in one repository, runs one
real Check.workflows() in process and asserts each file's findings. Two
subprocess runs keep the end-to-end path: the repository's workflows
and one job without a gate.
ANYPS5_BUILD_FUZZERS builds relinker_conversion_fuzzer with AddressSanitizer
and UndefinedBehaviorSanitizer in relinker-only Clang builds on Linux. The
first input byte selects the target system, --to-intel and the unused-filter
level; the rest is the executable passed to Conversion::Convert, the path the
web converter takes. tools/relinker_fuzz_seeds.py writes the relinker test
fixtures as seeds, and CTest runs a short smoke run.
A failed inspect or conversion hid the progress panel that held the
conversion log, cleared the selected archives and showed a single line,
so the only evidence of the failure was gone and a multi-GB input had to
be picked again. Compose the message with the phase, the current input,
the target, the libraries tag and the last 150 log lines, and show it in
the error box under "Failure details" so it can be copied into a report.
The report is a pure function in failure-report.mjs and is covered by
node tests.
Check that an empty testsuite and an empty testsuites file both exit with 2, print nothing and leave the --summary file untouched. The test fails with the previous behavior, which reported 0 tests and exit code 0.
A JUnit file without testcases, as ctest writes when it finds no tests in a build directory, gave '0 tests' and exit code 0, so a run that built nothing passed. Treat it as an unreadable report, with exit code 2.
Parse .github/sanitizer-known-failures.txt for every sanitizer and check that its entries stay sorted by test name, so a malformed or misplaced entry fails the sanitizer_report test in the regular build of the pull request that adds it, instead of the next nightly run. Names that no longer match a test are reported by the nightly summary, since many test names are generated in CMake loops.
Use the shapes ctest writes: a not-run test with SKIP_RETURN_CODE=77 or SKIP_REGULAR_EXPRESSION_MATCHED is a skip, while a not-run test whose executable is missing ('Unable to find executable') or whose skipped element has no message is a failure that fails the run. The test fails with the previous classification.