Skip to content

Fix failures in the top 200 core tests - #1606

Merged
fglock merged 42 commits into
masterfrom
fix/top-200-failing-tests-20261002
Oct 3, 2026
Merged

fglock merged 42 commits into
masterfrom
fix/top-200-failing-tests-20261002

Conversation

@fglock

@fglock fglock commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Fix the remaining reported core failures in form_scope.t, wantarray.t, switches.t, and caller.t, plus infnan.t and errnosig.t from the same UAT comparison.
  • Add focused project-owned unit regressions for format lexical scope, short-circuit list context, non-finite sprintf, caller names after stash deletion, interrupted-sleep errno, Unicode shell arguments, tied hash keys in empty-list assignment, Windows child stack options, Windows group lookup, terminal inheritance, and Windows byte-preserving shell arguments.

Validation

  • nice -n 19 make — passed on the final PR head.
  • nice -n 19 make check-links — passed.
  • GitHub Actions on final PR head b80480f74: Ubuntu and Windows jobs both passed.
  • Exact full UAT — 575/575 files; 0 failed, errored, timed out, incomplete, or Not OK tests; 680,762 planned assertions.
  • Comparison with the 2026-10-01 baseline — 0 regressed files, 45 files improved, +61 passing assertions.
  • Final UAT log: /Users/fglock/projects/PerlOnJava/logs/test_20261003_080000_mixed.log.

Additional backend diagnostic

The focused forced-interpreter diagnostic reported one assertion failure in each of op/hash.t and op/caller.t; the standard JVM full UAT and required unit gate pass.

fglock and others added 30 commits October 2, 2026 09:17
Resolve close and fileno against existing symbolic IO slots so probing an unopened name does not materialize a typeglob. Add focused coverage for both operations and their effect on subsequent glob lookup.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Return the typeglob for scalar assignments to its CODE slot, while keeping
other slot assignments on their assigned value. Preserve selected glob
references so select() can reflect later stash detachment and aliasing.

Add coverage for code-slot assignment results and selected-glob identity.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Return undef when scalar-backed getc reaches EOF. Treat system() without
arguments as a child wait instead of raising a missing-command error.

Add standard-Perl coverage for both behaviors.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Resolve scalar values passed to pipe as named globs, and assign descriptor 0
when STDIN has been closed and no handle owns that descriptor. Add regression
coverage for both behaviors.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Reject splice on a read-only array and report a negative value returned by
FETCHSIZE. Add regression coverage for both array behaviors.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Clear the array each iterator when assigning replacement contents so the next
iteration starts from index zero. Add focused regression coverage.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Make study fetch tied scalars on both execution backends. Return crypt output as
an unflagged byte string so assignment replaces a wide target cleanly.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep the feature-gated evalbytes keyword from falling through to ordinary
subroutine lookup when disabled. Add a regression for the syntax diagnostic.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Emit Perl's internal warning when a new key is inserted while a hash each
iterator is active. Respect lexical suppression of internal warnings.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Compile parenthesized lists in scalar context as their final value and
limit defined's take-reference parsing to direct code reference probes.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Emit the default syntax::bareword warning for incomplete hexadecimal
float prefixes and adjacent decimal exponent-like barewords while keeping
fractional nondecimal diagnostics unchanged.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep the list-context value for undef..undef as the empty string so the
range does not coerce both endpoints to numeric zero.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Preserve side effects for empty list assignments in void context without
materializing tied scalar repeats, while retaining list context for regex
matches that produce callback or position state.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Only fill an omitted underscore prototype slot from $_ when the slot is
required or no earlier argument was supplied. Optional trailing underscore
slots after required arguments remain absent from @_ when omitted.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Treat q and qq as quote operators when comma is their delimiter during
brace disambiguation, while preserving trailing-comma block parsing.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Treat the short-circuited second m?pattern?g attempt as a failed global
match and clear pos unless /c asks to preserve it.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Record references to package %FIELDS hashes during parsing so typed hash
and hash-slice dereferences validate keys before runtime vivification.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Handle `undef &{EXPR}` as an in-place code-reference undef and report
void-context anonymous subroutine warnings using lexical warning settings.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Report a saved stash-backed CV as anonymous after its symbol table entry
is deleted, matching Perl's caller() behavior.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
When interpreter caller() frames retain a deleted stash name, resolve the
active CV and report its anonymous name just like the JVM backend.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Reject large positive repeat counts before converting them to an int, so
64-bit bitwise results cannot wrap into negative list sizes.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Run successful eval-block destructors before clearing $@ while retaining
control-flow diagnostics, and map failed rmdir calls to errno values.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep sprintf coercions single-pass and propagate UTF-8 provenance only
from the format string or a Unicode regex stringification. Compile
interpolated Unicode regex patterns with Unicode character classes.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Move uppercase ypogegrammeni after its combining sequence, and avoid
reinterpreting unflagged byte strings as UTF-8 method names in can().

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Reject constants passed to a backslash hash prototype during parsing so
eval receives the expected type diagnostic, including UTF-8 sub names.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep malformed octets intact through Perl's :utf8 input layer while decoding
valid sequences, and preserve the byte-string semantics of ASCII $^X paths.
Add focused regressions for raw output and UTF-8 input through shell children.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep readline operations in list context when empty-target assignments
 discard their values, so the full input list is consumed on both backends.
Add a focused regression for EOF after an empty-list assignment.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
When a format references a lexical whose declaring scope has ended, do not
resolve that name to a same-named package global or unrelated active lexical.
Keep the captured cell only while it is active, otherwise use a fresh undef
cell for the format argument evaluation.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Do not count the global %^H slot as a lexical pad owner when reporting its
reference count. Add regression coverage for eval during an /ee replacement.

Generated with [Codex](https://openai.com/codex)

Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Give op/cond.t the same stack allowance used for other deeply nested
core tests, and add a regression unit for successful deep eval.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
fglock and others added 12 commits October 3, 2026 03:29
Assign a stable BEGIN package identity to captured lexicals without AST
nodes so nested eval BEGIN blocks reuse the correct lexical alias.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep lexical subroutine references in $DB::sub while the debugger's
DB::goto hook runs, so assigning it to $_ preserves the target CV.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Use libc group records for getgrnam, getgrgid, and getgrent, and expose
supplementary group IDs through POSIX::getgroups and the group ID variables.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Populate Config's myuname field from the detected Perl OS name, version,
and architecture so platform-aware Perl code can select the correct path.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Fix bare -t defaults, preserve in-place permission bits, inherit terminal
stdin in subprocesses, and configure the core test runner for TTY and taint
coverage.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Refresh format lexical captures from the declaring scope, preserve dynamic
list context for short-circuit expressions, and format non-finite numeric
values consistently across sprintf conversions. Restore errno after interrupted
sleep and preserve shell argument bytes for nested interpreters. Add focused
regressions for each repaired behavior.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Trigger pull request checks for the exact source tree that passed the final
full UAT and baseline comparison.

Generated with Codex (https://openai.com/codex)
Co-Authored-By: Codex <codex@openai.com>
Bring the core UAT PR up to date with master for current CI validation and
preserve both branches' work-in-progress changelog entries.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Transport non-ASCII command-line arguments through an ASCII-safe launcher
encoding when the JVM starts under the C locale, and emit unquoted shell
byte arguments through POSIX printf substitutions.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Keep byte-preserving shell substitutions for C/POSIX child environments while
leaving UTF-8 locale command arguments as Unicode characters.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Retain the configured stack size when embedded runtimes relaunch PerlOnJava,
return the group name from scalar getgrgid, and parse single-quoted Windows
qx arguments without sending them through cmd.exe. Preserve byte-valued
characters for direct Windows child launches.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
Encode byte-valued characters in Windows shell commands as ASCII hex
markers, then restore them before Perl argument parsing. Decode markers in
both launcher and embedded-runtime child processes.

Generated with [Codex](https://openai.com/codex)
Co-Authored-By: Codex <158243242+codex@users.noreply.github.com>
@fglock
fglock marked this pull request as ready for review October 3, 2026 16:18
@fglock
fglock merged commit 92ee340 into master Oct 3, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant