]> git.ipfire.org Git - thirdparty/make.git/commitdiff
* tests/scripts/features/exec: Don't test with C shells
authorPaul Smith <psmith@gnu.org>
Tue, 25 Oct 2022 18:46:58 +0000 (14:46 -0400)
committerPaul Smith <psmith@gnu.org>
Tue, 25 Oct 2022 18:49:10 +0000 (14:49 -0400)
Using C shells (csh, tcsh) with make is known to be problematic due
to incorrect ways it handles open file descriptors, at least.  If
the user's shell is *csh then don't try it during exec tests.

tests/scripts/features/exec

index 29cba02a7a8c9953621f91b29064c81aa9a1fdac..f139cf8c8bbf520c0cefa79f3a70c3b708f73527 100644 (file)
@@ -15,11 +15,19 @@ my $details = "The various shells that this test uses are the default"
 $port_type eq 'UNIX' or return -1;
 $^O =~ /cygwin/ and return -1;
 
+my @shbangs = ('', '#!/bin/sh', "#!$perl_name");
+my @shells = ('', 'SHELL=/bin/sh');
+
+# Try whatever shell the user has, as long as it's not a C shell.
+# The C shell is not usable with make, due to not correctly handling
+# file descriptors and possibly other issues.
 my $usersh = $origENV{SHELL};
-my $answer = 'hello, world';
+if ($usersh !~ /csh/) {
+    push @shbangs, ("#!$usersh");
+    push @shells, ("SHELL=$usersh");
+}
 
-my @shbangs = ('', '#!/bin/sh', "#!$usersh", "#!$perl_name");
-my @shells = ('', 'SHELL=/bin/sh', "SHELL=$usersh");
+my $answer = 'hello, world';
 
 # tests [0-11]
 # Have a makefile with various SHELL= exec a shell program with varios