diff options
-rw-r--r-- | src/job.c | 2 | ||||
-rw-r--r-- | tests/scripts/features/errors | 22 | ||||
-rw-r--r-- | tests/test_driver.pl | 8 |
3 files changed, 21 insertions, 11 deletions
@@ -2376,7 +2376,7 @@ child_execute_job (struct childbase *child, int good_stdin, char **argv) if (!cmd) { - r = ENOENT; + r = errno; goto cleanup; } diff --git a/tests/scripts/features/errors b/tests/scripts/features/errors index eac64ed9..ec49547b 100644 --- a/tests/scripts/features/errors +++ b/tests/scripts/features/errors @@ -60,15 +60,17 @@ run_make_test(undef, 'two', # Try failing due to non-executable file -my $noexe = './barfooblatboz'; -touch($noexe); - -run_make_test(qq! -one: ; -$noexe xx yy -two: ; $noexe aa bb -!, - 'one', "$noexe xx yy\n#MAKE#: $noexe: Permission denied\n#MAKE#: [#MAKEFILE#;2: one] Error 127 (ignored)\n"); - -unlink($noexe); +if ($ERR_nonexe_file) { + my $noexe = './barfooblatboz'; + touch($noexe); + + run_make_test(qq! + one: ; -$noexe xx yy + two: ; $noexe aa bb + !, + 'one', "$noexe xx yy\n#MAKE#: $noexe: $ERR_nonexe_file\n#MAKE#: [#MAKEFILE#;2: one] Error 127 (ignored)\n"); + + unlink($noexe); +} 1; diff --git a/tests/test_driver.pl b/tests/test_driver.pl index 4af84daf..30e19435 100644 --- a/tests/test_driver.pl +++ b/tests/test_driver.pl @@ -68,6 +68,7 @@ if ($has_POSIX) { $ERR_no_such_file = undef; $ERR_read_only_file = undef; $ERR_unreadable_file = undef; +$ERR_noexe_file = undef; if (open(my $F, '<', 'file.none')) { print "Opened non-existent file! Skipping related tests.\n"; @@ -86,6 +87,13 @@ if (open(my $F, '>', 'file.out')) { $ERR_read_only_file = "$!"; } +$_ = `./file.out`; +if ($? == 0) { + print "Executed non-executable file! Skipping related tests.\n"; +} else { + $ERR_nonexe_file = "$!"; +} + chmod(0000, 'file.out'); if (open(my $F, '<', 'file.out')) { print "Opened unreadable file! Skipping related tests.\n"; |