tests: be stricter in determining whether "make -jN" works
authorStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 19 Feb 2012 13:53:53 +0000 (14:53 +0100)
committerStefano Lattarini <stefano.lattarini@gmail.com>
Sun, 19 Feb 2012 13:55:11 +0000 (14:55 +0100)
* tests/parallel-tests3.test: With at least Solaris 10 CCS make,
"make -jN" does not fail, but merely prints a warning about
"DistributedMake -j option" being ignored.  This was causing this
test case to fail spuriously.  So we now use a stricter check in
determining whether make works in parallel mode.  Since we are at
it, we try to cater also to Sun Distributed make, which understands
"-j N" but *not* "-jN".

tests/parallel-tests3.test

index f146d0f..b37cf0a 100755 (executable)
@@ -24,8 +24,26 @@ case $MAKE in
   *\ -j*) skip_ "\$MAKE contains \`-j'";;
 esac
 
-using_gmake || echo "all:" | $MAKE -f - -j4 all \
-  || skip_ "can't run make in parallel mode"
+if using_gmake; then
+  j=-j
+else
+  unindent > Makefile <<END
+    all: one two
+    one:
+       $sleep && test -f two
+    two:
+       echo ok > \$@
+END
+  for j in "-j" "-j " NONE; do
+    if test x"$j" = xNONE; then
+      skip_ "can't run make in parallel mode"
+    fi
+    $MAKE ${j}2 all >output 2>&1 || continue
+    $EGREP -i "(warning|error):|-j[\"\'\` ]" output && continue
+    break
+  done
+  rm -f one output Makefile
+fi
 
 cat >> configure.in << 'END'
 AC_OUTPUT
@@ -69,13 +87,13 @@ for build in serial parallel; do
 done
 
 cd serial
-$MAKE -j1 check &
+$MAKE ${j}1 check &
 cd ../parallel
 $sleep
 # Use append mode here to avoid dropping output.
 # Yes, this actually happens.
 : >stdout
-$MAKE -j4 check >> stdout
+$MAKE ${j}4 check >> stdout
 cd ..
 # Ensure the tests are really being run in parallel mode: if this is
 # the case, the serial run of the dummy testsuite started above should