From ed4995f97dcc2489796e8e6e3dfc53e99a777e81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C5=8Dan?= Date: Fri, 13 Mar 2026 13:02:00 -0600 Subject: [PATCH] fix: set ENOENT errno in rmdir when called with undef path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Every other CORE override that handles undef arguments (mkdir, symlink, link, readlink) sets $! before returning, but __rmdir was missing this. Real CORE::rmdir(undef) sets $! to ENOENT — match that behavior. Co-Authored-By: Claude Opus 4.6 --- lib/Test/MockFile.pm | 1 + t/rmdir.t | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/Test/MockFile.pm b/lib/Test/MockFile.pm index f2a3f57..84ccb85 100644 --- a/lib/Test/MockFile.pm +++ b/lib/Test/MockFile.pm @@ -3290,6 +3290,7 @@ sub __rmdir (_) { # Core sometimes warns: 'Use of uninitialized value $_ in rmdir' if ( !defined $file ) { carp('Use of uninitialized value in rmdir'); + $! = ENOENT; return 0; } diff --git a/t/rmdir.t b/t/rmdir.t index 0191e20..30eec9f 100644 --- a/t/rmdir.t +++ b/t/rmdir.t @@ -48,8 +48,10 @@ subtest "undef rmdir" => sub { is( $returns, 0, " - returns 0" ); local $_; + $! = 0; like( warning { $returns = rmdir(undef) }, qr/^Use of uninitialized value in rmdir at.+\n$/, "REAL mkdir when undef is passed as the directory." ); - is( $returns, 0, " - returns 0" ); + is( $returns, 0, " - returns 0" ); + is( $! + 0, ENOENT, " - \$! is ENOENT" ); }; subtest "rmdir existing file" => sub {