summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/job.c2
-rw-r--r--tests/scripts/features/errors22
-rw-r--r--tests/test_driver.pl8
3 files changed, 21 insertions, 11 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);
-
-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";