From 15a7e3830fd7b84238e4909522ce3cd6fec7b702 Mon Sep 17 00:00:00 2001
From: Paul Smith <psmith@gnu.org>
Date: Tue, 30 Aug 2022 13:41:37 -0400
Subject: [PATCH] Fix tests for MacOS and Windows

* maintMakefile: Remove the template headers as prerequisites.
* tests/scripts/features/jobserver: Only test fifo if enabled.
* tests/scripts/variables/INCLUDE_DIRS: On MacOS none of the default
directories exist so .INCLUDE_DIRS is empty by default.
* tests/scripts/features/se_explicit: Fail via exit.  cp will show
different error messages on different systems.
* tests/scripts/features/se_implicit: Ditto.
* tests/scripts/features/se_statpat: Ditto.
---
 maintMakefile                        |  5 ++--
 tests/scripts/features/jobserver     | 11 ++++----
 tests/scripts/features/se_explicit   |  5 ++--
 tests/scripts/features/se_implicit   |  5 ++--
 tests/scripts/features/se_statpat    |  5 ++--
 tests/scripts/variables/INCLUDE_DIRS | 40 +++++++++++++++-------------
 6 files changed, 35 insertions(+), 36 deletions(-)

diff --git a/maintMakefile b/maintMakefile
index aa536aaf..88f734ae 100644
--- a/maintMakefile
+++ b/maintMakefile
@@ -82,9 +82,8 @@ Basic.mk: Basic.mk.template .dep_segment Makefile
 	sed -e 's@^\([^ ]*\)\.o:@$$(OUTDIR)\1.$$(OBJEXT):@' \
 	    -e 's@\([^ ]*\.[ch]\)@$$(SRCDIR)/\1@g' \
 	    -e 's@$$(SRCDIR)/src/config.h@$$(OUTDIR)src/config.h@g' \
-	    -e 's@$$(SRCDIR)/lib/stdlib.h@@g' \
-	    -e 's@$$(SRCDIR)/lib/sys/types.h@@g' \
-	    -e 's@$$(SRCDIR)/lib/unistd.h@@g' \
+	    -e 's@$$(SRCDIR)/lib/alloca.h@@g' \
+	    -e 's@$$(SRCDIR)/lib/stdbool.h@@g' \
 	  $(word 2,$^) >>$@
 	chmod a-w $@
 
diff --git a/tests/scripts/features/jobserver b/tests/scripts/features/jobserver
index 17374eaf..d56c6f40 100644
--- a/tests/scripts/features/jobserver
+++ b/tests/scripts/features/jobserver
@@ -139,11 +139,12 @@ all a: ; @echo $@
 # test twice.
 # First time look for /$ERR_no_such_file/ to ensure mkfifo failed.
 # Second time look for /Nothing to be done/ to ensure make succeeded.
-$ENV{TMPDIR} = "nosuchdir";
-run_make_test("all:\n", '-j2', "/$ERR_no_such_file/");
-
-$ENV{TMPDIR} = "nosuchdir";
-run_make_test(undef, '-j2', "/Nothing to be done/");
+if (exists $FEATURES{'jobserver-fifo'}) {
+  $ENV{TMPDIR} = "nosuchdir";
+  run_make_test("all:\n", '-j2', "/$ERR_no_such_file/");
 
+  $ENV{TMPDIR} = "nosuchdir";
+  run_make_test(undef, '-j2', "/Nothing to be done/");
+}
 
 1;
diff --git a/tests/scripts/features/se_explicit b/tests/scripts/features/se_explicit
index ee5a89de..d1247d40 100644
--- a/tests/scripts/features/se_explicit
+++ b/tests/scripts/features/se_explicit
@@ -480,11 +480,10 @@ unlink('hello.1');
 # No side effects from second expansion of unrelated rules.
 run_make_test(q!
 .SECONDEXPANSION:
-hello.tsk:; cp hello.1 $@
+hello.tsk:; exit 1
 unrelated: $$(shell touch hello.1);
 !, '',
-"cp hello.1 hello.tsk
-cp: cannot stat 'hello.1': $ERR_no_such_file
+"exit 1
 #MAKE#: *** [#MAKEFILE#:3: hello.tsk] Error 1\n", 512);
 
 # sv 62706.
diff --git a/tests/scripts/features/se_implicit b/tests/scripts/features/se_implicit
index 58775631..c9d7ca9f 100644
--- a/tests/scripts/features/se_implicit
+++ b/tests/scripts/features/se_implicit
@@ -482,12 +482,11 @@ hello.tsk from hello.o
 run_make_test(q!
 .SECONDEXPANSION:
 all: hello.tsk
-%.tsk: %.o; cp hello.1 $@
+%.tsk: %.o; exit 1
 hello.o:;
 %.q: $$(shell touch hello.1);
 !, '',
-"cp hello.1 hello.tsk
-cp: cannot stat 'hello.1': $ERR_no_such_file
+"exit 1
 #MAKE#: *** [#MAKEFILE#:4: hello.tsk] Error 1\n", 512);
 
 # sv 62706.
diff --git a/tests/scripts/features/se_statpat b/tests/scripts/features/se_statpat
index 616a1a85..935ff3fa 100644
--- a/tests/scripts/features/se_statpat
+++ b/tests/scripts/features/se_statpat
@@ -207,12 +207,11 @@ unlink('hello.1');
 run_make_test(q!
 .SECONDEXPANSION:
 all: hello.tsk
-hello.tsk: %.tsk: %.o; cp hello.1 $@
+hello.tsk: %.tsk: %.o; exit 1
 hello.o:;
 bye.tsk: %.tsk: $$(shell touch hello.1);
 !, '',
-"cp hello.1 hello.tsk
-cp: cannot stat 'hello.1': $ERR_no_such_file
+"exit 1
 #MAKE#: *** [#MAKEFILE#:4: hello.tsk] Error 1\n", 512);
 
 # sv 62706.
diff --git a/tests/scripts/variables/INCLUDE_DIRS b/tests/scripts/variables/INCLUDE_DIRS
index da1623c6..68812924 100644
--- a/tests/scripts/variables/INCLUDE_DIRS
+++ b/tests/scripts/variables/INCLUDE_DIRS
@@ -8,11 +8,12 @@ use Cwd;
 $dir = cwd;
 $dir =~ s,.*/([^/]+)$,../$1,;
 
-# Test #1: The content of .INCLUDE_DIRS depends on the platform for which
-#          make was built. What we know for sure is that it shouldn't be
-#          empty.
-#
-run_make_test('
+if (-d '/usr/include') {
+  # Test #1: The content of .INCLUDE_DIRS depends on the platform for which
+  #          make was built. What we know for sure is that it shouldn't be
+  #          empty.
+  #
+  run_make_test('
 ifeq ($(.INCLUDE_DIRS),)
 $(warning .INCLUDE_DIRS is empty)
 endif
@@ -20,8 +21,8 @@ endif
 .PHONY: all
 all:;@:
 ',
-              '', '');
-
+                '', '');
+}
 
 # Test #2: Make sure -I paths end up in .INCLUDE_DIRS.
 #
@@ -57,20 +58,21 @@ all:;\@:
 
 # Verify that -I- disables content from .INCLUDE_DIRS
 
-run_make_test("
-ifneq (\$(.INCLUDE_DIRS),)
-\$(warning Mismatched \$(.INCLUDE_DIRS) != )
+run_make_test(q/
+ifneq ($(.INCLUDE_DIRS),)
+$(warning Mismatched $(.INCLUDE_DIRS) != )
 endif
-all:;\@:
-",
+all:;@:
+/,
               '-I-', '');
 
 # Prefix -I dirs to the front
 mkdir('somedir', 0777);
 
+my $xdirs = $dirs ? " $dirs" : '';
 run_make_test("
-ifneq (\$(.INCLUDE_DIRS),somedir $dirs)
-\$(warning Mismatched \$(.INCLUDE_DIRS) != somedir $dirs)
+ifneq (\$(.INCLUDE_DIRS),somedir$xdirs)
+\$(warning Mismatched '\$(.INCLUDE_DIRS)' != 'somedir$xdirs')
 endif
 all:;\@:
 ",
@@ -78,12 +80,12 @@ all:;\@:
 
 # Verify .INCLUDE_DIRS contains files after -I-
 
-run_make_test("
-ifneq (\$(.INCLUDE_DIRS),somedir)
-\$(warning Mismatched \$(.INCLUDE_DIRS) != somedir)
+run_make_test(q/
+ifneq ($(.INCLUDE_DIRS),somedir)
+$(warning Mismatched $(.INCLUDE_DIRS) != somedir)
 endif
-all:;\@:
-",
+all:;@:
+/,
               '-I - -I somedir', '');
 
 rmdir('somedir');