From 02a4c2913a47c988e958b965e53197feff281f38 Mon Sep 17 00:00:00 2001 From: Paul Smith Date: Sat, 14 Sep 2019 15:41:58 -0400 Subject: [PATCH] * src/job.c (child_execute_job): Use errno from find_in_given_path(). * tests/test_driver.pl: Determine non-executable error message. * tests/scripts/features/errors: Use the local non-executable error. --- src/job.c | 2 +- tests/scripts/features/errors | 18 ++++++++++-------- tests/test_driver.pl | 8 ++++++++ 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/job.c b/src/job.c index 67194d1f..c7e7f795 100644 --- a/src/job.c +++ b/src/job.c @@ -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); +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: Permission denied\n#MAKE#: [#MAKEFILE#;2: one] Error 127 (ignored)\n"); + 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); + 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";