This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
op/exec.t: ENOTDIR is a legit errno
authorKarl Williamson <khw@cpan.org>
Thu, 9 Apr 2020 18:02:12 +0000 (12:02 -0600)
committerSawyer X <xsawyerx@cpan.org>
Wed, 27 May 2020 08:09:32 +0000 (11:09 +0300)
This test file does a system() on a non-existent file, and checks
that an error happens, and that the errno is one that is expected.
Prior to this commit it didn't think that ENOTDIR could happen.

But it can If PATH contains a component that is plain file, or, on some
systems, a component simply doesn't exist.

I examined the possible errnos listed in a Linux man page for this, and
this looked to be the only one that is likely to come up that weren't
already covered.

This fixes GH #17515

t/op/exec.t

index c676a97..e658d2e 100644 (file)
@@ -113,6 +113,8 @@ unless( ok($rc == 255 << 8 or $rc == -1 or $rc == 256 or $rc == 512) ) {
 
 unless ( ok( $! == 2  or  $! =~ /\bno\b.*\bfile/i or  
              $! == 13 or  $! =~ /permission denied/i or
+             $! == 20 or  $! =~ /not a directory/i or   # If PATH component is
+                                                        # a non-directory
              $! == 22 or  $! =~ /invalid argument/i  ) ) {
     diag sprintf "\$! eq %d, '%s'\n", $!, $!;
 }