Skip to content

Increase PerlOnJava test pass rate #1116

Description

@fglock

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:

  1. Add a focused project-owned regression test.
  2. Validate expected behavior with system Perl first.
  3. Verify JVM and interpreter backends where applicable.
  4. 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions