Increase PerlOnJava test pass rate
Use the 2026-08-24 Perl test-runner report as the baseline:
- 697,285 tests total
- 686,978 passing (98.5%)
- 10,317 not passing
- 1,012 tests blocked by incomplete runs
- 378/623 files fully passing
The priority is meaningful Perl compatibility and crash-unblocking work. Environment-only, XS-dependent, Perl-internals, and optree tests should be tracked separately rather than treated as runtime compatibility regressions.
Phase 1: unblock incomplete runs
Fix the highest-value fatal failures first:
op/write.t: format lookup currently fails with Undefined format "main::OUT".op/const-optree.t: Not a CODE reference handling.op/goto.t: interpreter null-result handling during nested dynamic goto.op/kvhslice.t: hash-slice mutation/read-only behavior.op/rt119311.t: destruction and call-stack unwinding through END blocks and formats.mro/package_aliases*.t: package-stash alias invalidation and MRO lookup.comp/form_scope.t: closure/form handling.op/decl-refs.t: declared-reference parsing and runtime behavior.comp/parser.t: parser error recovery and diagnostic compatibility.
Target: eliminate the fatal termination in these files and recover most of the 1,012 blocked tests.
Phase 2: fix concentrated semantic clusters
- Tie dispatch: correct FETCH/STORE counts and tied-glob behavior in
op/tie_fetch_count.t, op/tie.t, and op/tiehandle.t. - Signatures/prototypes: prioritize binding, defaults, slurpy parameters, and diagnostics in
op/signatures.t and related tests. - File tests and I/O: address
op/filetest.t, op/utf8decode.t, and remaining io/* failures. - Comparison chains: fix the shared compiler/runtime issue behind
op/cmpchain.t. - Package/version parsing: fix the shared parser behavior behind
op/packagev.t. - Smartmatch: improve supported scalar, reference, array, hash, and coderef cases in
op/smartmatch.t.
Phase 3: diagnostics and regression coverage
After behavior is correct, normalize Perl-compatible error categories, wording, source locations, and UTF-8 rendering, especially for lib/croak.t and parser diagnostics.
For every externally observed failure:
- Add a focused project-owned regression test.
- Validate expected behavior with system Perl first.
- Verify JVM and interpreter backends where applicable.
- Preserve existing Perl core tests unchanged.
Acceptance criteria
- Run affected tests with
dev/tools/perl_test_runner.pl, hard timeouts, and captured output. - Run focused unit tests and the full
make gate after each cluster. - Track passing tests, incomplete tests, fully passing files, and regressions separately.
- First milestone: recover approximately 800–1,000 blocked tests without introducing new failures.
Baseline source: logs/test_20260824_200000_1101.log, generated by dev/tools/perl_test_runner.pl.
Increase PerlOnJava test pass rate
Use the 2026-08-24 Perl test-runner report as the baseline:
The priority is meaningful Perl compatibility and crash-unblocking work. Environment-only, XS-dependent, Perl-internals, and optree tests should be tracked separately rather than treated as runtime compatibility regressions.
Phase 1: unblock incomplete runs
Fix the highest-value fatal failures first:
op/write.t: format lookup currently fails withUndefined format "main::OUT".op/const-optree.t:Not a CODE referencehandling.op/goto.t: interpreter null-result handling during nested dynamicgoto.op/kvhslice.t: hash-slice mutation/read-only behavior.op/rt119311.t: destruction and call-stack unwinding throughENDblocks and formats.mro/package_aliases*.t: package-stash alias invalidation and MRO lookup.comp/form_scope.t: closure/form handling.op/decl-refs.t: declared-reference parsing and runtime behavior.comp/parser.t: parser error recovery and diagnostic compatibility.Target: eliminate the fatal termination in these files and recover most of the 1,012 blocked tests.
Phase 2: fix concentrated semantic clusters
op/tie_fetch_count.t,op/tie.t, andop/tiehandle.t.op/signatures.tand related tests.op/filetest.t,op/utf8decode.t, and remainingio/*failures.op/cmpchain.t.op/packagev.t.op/smartmatch.t.Phase 3: diagnostics and regression coverage
After behavior is correct, normalize Perl-compatible error categories, wording, source locations, and UTF-8 rendering, especially for
lib/croak.tand parser diagnostics.For every externally observed failure:
Acceptance criteria
dev/tools/perl_test_runner.pl, hard timeouts, and captured output.makegate after each cluster.Baseline source:
logs/test_20260824_200000_1101.log, generated bydev/tools/perl_test_runner.pl.