Changes for version 0.015 - 2026-04-26
- New features
- feat: add mock_file_check_guard() for scope-based cleanup
- feat: add stat_as_fifo() helper for named pipe mocking
- feat: support CHECK_IS_NULL return from mock callbacks (treats target as non-existent)
- Bug fixes - errno preservation
- fix: preserve errno through XS scope cleanup in stat/file-check paths
- fix: preserve errno through pp_overload_ft_int (-s handler)
- fix: preserve errno through pp_overload_ft_nv (-M, -A, -C handlers)
- fix: auto-set errno (ENOENT) for int ops returning CHECK_IS_FALSE
- Bug fixes - operator behavior
- fix: enable -T, -B and other uppercase file-test operators
- fix: eliminate -B double-dispatch through the mock system
- fix: return CHECK_IS_NULL for -B/-T on non-existent mock files to avoid double-dispatch
- fix: restore @stat guard in -B handler to prevent undef warning
- fix: correct -e false negative for stat results with mode 0
- fix: use stat (not lstat) for -p/-S/-b/-c in _check_from_stat
- fix: use stat (not lstat) for -u, -g, -k in mock_all_from_stat
- fix: resolve -1 sentinel collision for NV ops (-M, -C, -A)
- fix: handle non-numeric SV types in pp_overload_ft_nv
- fix: CHECK_IS_FALSE now returns a defined false value instead of undef
- Bug fixes - input validation / API hardening
- fix: croak on trailing dash-option without CODE ref in import list
- fix: croak on unknown options in stat_as_* helpers
- fix: croak on unknown user/group names in stat helpers
- fix: accept bare (non-st_) keys in hash stat mocks
- fix: accept string-encoded numbers in stat array validation
- fix: add missing dev/ino/nlink/rdev defaults to stat_as_* helpers
- fix: preserve original key when looking up stat slot in _stat_for
- refactor: use Carp::croak instead of die in public API
- Bug fixes - thread / re-entrancy safety
- fix: isolate gl_overload_ft per interpreter via MY_CXT for ithreads safety
- fix: make _check() re-entrant safe for nested mock callbacks
- fix: replace assert() with runtime croak for gl_overload_ft null checks
- fix: release SV refcount in pp_overload_ft_nv before all return paths
- fix: save original count before drain loop in _overload_ft_ops_nv croak
- Internals / cleanup
- refactor: extract LEAVE_PRESERVING_ERRNO macro for errno-safe scope exits
- refactor: extract _resolve_check / _normalize_and_validate_check helpers
- refactor: replace _check_from_stat if/elsif chain with a dispatch table
- refactor: build %REVERSE_MAP eagerly at module load
- cleanup: remove debug printfs, dead code, and stale TODOs from XS
- cleanup: remove unused offset field from OverloadFTOps struct
- refactor: update stale GitHub URLs from CpanelInc to cpan-authors
- fix: remove stale docs and fix POD typo
Modules
override/mock perl file check -X: -e, -f, -d, ...
Provides
in lib/Overload/FileCheck.pm
Examples
- examples/mock-multiple-filecheck-import.t
- examples/mock-multiple-filecheck-run.t
- examples/mock-single-filecheck-at-import.pl
- examples/mock-single-filecheck.pl
- examples/mock-stat.pl
- examples/mock_all_from_stat.t
- examples/perldoc_mock-all-file-check-trace.t
- examples/perldoc_mock-all-file-check.t
- examples/perldoc_mock-stat.t
- examples/synopsis.pl
- examples/trace-code.pl