automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FYI] {maint} tests: unify some tests on "make -n", reducing duplication


From: Stefano Lattarini
Subject: [FYI] {maint} tests: unify some tests on "make -n", reducing duplication
Date: Sat, 14 Jan 2012 10:24:49 +0100

* tests/maken2.test: Merge into ...
* tests/maken.test: ... this test, to avoid unnecessary code
duplication.  Make checks depending on GNU make conditional to
the actual presence of GNU make.
* tests/maken4.test: Similarly, merge into ...
* tests/maken3.test: ... this test.
* tests/Makefile.am (TESTS): Remove maken2.test and maken4.test.
---
 tests/Makefile.am |    2 -
 tests/maken.test  |    9 ++-
 tests/maken2.test |   63 -------------------
 tests/maken3.test |   24 ++++++--
 tests/maken4.test |  172 -----------------------------------------------------
 5 files changed, 25 insertions(+), 245 deletions(-)
 delete mode 100755 tests/maken2.test
 delete mode 100755 tests/maken4.test

diff --git a/tests/Makefile.am b/tests/Makefile.am
index e79c3be..a96218c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -565,9 +565,7 @@ makefile-deps.test \
 makej.test \
 makej2.test \
 maken.test \
-maken2.test \
 maken3.test \
-maken4.test \
 makevars.test \
 man.test \
 man2.test \
diff --git a/tests/maken.test b/tests/maken.test
index 8c78b97..61f6886 100755
--- a/tests/maken.test
+++ b/tests/maken.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
+# Copyright (C) 2009, 2012 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -16,8 +16,8 @@
 
 # Ensure that `make -n dist' and `make -n distcheck' do not change files
 # on disk, due to GNU make executing rules containing `$(MAKE)'.
-
-# Please keep this test in sync with sister test maken2.test.
+# Also, ensure that `make -n dist' and `make -n distcheck' show what
+# would happen, at least when using GNU make.
 
 . ./defs || Exit 1
 
@@ -54,6 +54,9 @@ echo stamp > stampfile
 $sleep
 for target in dist distcheck; do
   $MAKE -n $target
+  if using_gmake; then
+    $MAKE -n $target | grep stamp-sub-dist-hook || Exit 1
+  fi
   $MAKE test-no-distdir
   test `ls -1t | sed 1q` = stampfile
 done
diff --git a/tests/maken2.test b/tests/maken2.test
deleted file mode 100755
index 97bf798..0000000
--- a/tests/maken2.test
+++ /dev/null
@@ -1,63 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Ensure that `make -n dist' and `make -n distcheck' show what would happen.
-# This currently works for GNU make only.
-
-# Please keep this test in sync with sister test maken.test.
-
-required=GNUmake
-. ./defs || Exit 1
-
-set -e
-
-mkdir sub
-
-cat >> configure.in << 'END'
-AC_CONFIG_FILES([sub/Makefile])
-AC_OUTPUT
-END
-
-cat > Makefile.am <<'END'
-SUBDIRS = sub
-distcheck-hook:
-       @: > stamp-distcheck-hook
-test-no-distdir:
-       test ! -d $(distdir)
-       test ! -f stamp-distcheck-hook
-       test ! -f sub/stamp-sub-dist-hook
-END
-cat >sub/Makefile.am <<'END'
-dist-hook:
-       @: > stamp-sub-dist-hook
-END
-
-$ACLOCAL
-$AUTOCONF
-$AUTOMAKE
-./configure
-
-$sleep
-echo stamp > stampfile
-$sleep
-for target in dist distcheck; do
-  $MAKE -n $target
-  $MAKE test-no-distdir
-  $MAKE -n $target | grep stamp-sub-dist-hook
-  test `ls -1t | sed 1q` = stampfile
-done
-
-Exit 0
diff --git a/tests/maken3.test b/tests/maken3.test
index b839d0d..27494cc 100755
--- a/tests/maken3.test
+++ b/tests/maken3.test
@@ -1,5 +1,5 @@
 #! /bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
+# Copyright (C) 2009, 2012 Free Software Foundation, Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -14,14 +14,19 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# Test `make -n' for various targets, to ensure that no files or
-# directories are created.
+# Test `make -n' for various targets, to ensure that:
+#
+#  1. no files or directories are created or removed, and
+#
+#  2. if using GNU make, stdout output is sufficiently complete.
+#
+# FIXME: The checks in (2) should also work with BSD make implementations
+# FIXME: that support the `.MAKE' special target, but currently we don't
+# FIXME: explicitly test that this is truly the case.
 #
 # This test exercises the GCS-mandated targets (except for dist)
 # as well as tags, TAGS.
 
-# Please keep this test in sync with sister test maken4.test.
-
 . ./defs || Exit 1
 
 set -e
@@ -134,18 +139,27 @@ check_targets ()
     case $target in
     install-* | installdirs | tags | TAGS ) ;;
     *)
+      if using_gmake; then
+        grep "stamp-$target$" stdout || Exit 1
+      fi
       test ! -f "stamp-$target$" || Exit 1
       ;;
     esac
     case $target in
     install-* | installdirs ) ;;
     *)
+      if using_gmake; then
+        grep "stamp-$target-sub" stdout || Exit 1
+      fi
       test ! -f "sub/stamp-$target-sub" || Exit 1
       ;;
     esac
     case $target in
     distclean | maintainer-clean ) ;;
     *)
+      if using_gmake; then
+        grep "should-not-be-executed" stdout || Exit 1
+      fi
       test ! -f "sub2/sub2-$target-should-not-be-executed" || Exit 1
       ;;
     esac
diff --git a/tests/maken4.test b/tests/maken4.test
deleted file mode 100755
index ae5ce27..0000000
--- a/tests/maken4.test
+++ /dev/null
@@ -1,172 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2009  Free Software Foundation, Inc.
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-# Test `make -n' for various targets, to ensure that stdout output is
-# sufficiently complete.  This currently only works for GNU make and
-# BSD make implementations that support the `.MAKE' special target.
-#
-# This test exercises the GCS-mandated targets (except for dist)
-# as well as tags, TAGS.
-
-# Please keep this test in sync with sister test maken3.test.
-
-required=GNUmake
-. ./defs || Exit 1
-
-set -e
-
-mkdir sub sub2
-
-cat >> configure.in << 'END'
-AC_CONFIG_FILES([sub/Makefile sub2/Makefile])
-AC_OUTPUT
-END
-
-cat > Makefile.am <<'END'
-TESTS = foo.test
-SUBDIRS = sub sub2
-##BUILT_SOURCES = foo
-foo:
-foo.test:
-all-local:
-       @: > stamp-all
-install-data-local:
-       @: > stamp-install
-uninstall-local:
-       @: > stamp-uninstall
-clean-local:
-       @: > stamp-clean
-distclean-local:
-       @: > stamp-distclean
-info-local:
-       @: > stamp-info
-html-local:
-       @: > stamp-html
-dvi-local:
-       @: > stamp-dvi
-ps-local:
-       @: > stamp-ps
-pdf-local:
-       @: > stamp-pdf
-check-local:
-       @: > stamp-check
-installcheck-local:
-       @: > stamp-installcheck
-mostlyclean-local:
-       @: > stamp-mostlyclean
-maintainer-clean-local:
-       @: > stamp-maintainer-clean
-END
-cat >sub/Makefile.am <<'END'
-all-local:
-       @: > stamp-all-sub
-install-data-local:
-       @: > stamp-install-sub
-uninstall-local:
-       @: > stamp-uninstall-sub
-clean-local:
-       @: > stamp-clean-sub
-distclean-local:
-       @: > stamp-distclean-sub
-info-local:
-       @: > stamp-info-sub
-html-local:
-       @: > stamp-html-sub
-dvi-local:
-       @: > stamp-dvi-sub
-ps-local:
-       @: > stamp-ps-sub
-pdf-local:
-       @: > stamp-pdf-sub
-check-local:
-       @: > stamp-check-sub
-installcheck-local:
-       @: > stamp-installcheck-sub
-tags:
-       @: > stamp-tags-sub
-TAGS:
-       @: > stamp-TAGS-sub
-mostlyclean-local:
-       @: > stamp-mostlyclean-sub
-maintainer-clean-local:
-       @: > stamp-maintainer-clean-sub
-END
-cat >sub2/Makefile.am <<'END'
-all install uninstall clean check:
-       @: > address@hidden
-info dvi pdf ps:
-       @: > address@hidden
-html:
-       @: > address@hidden
-install-info install-html install-dvi install-pdf install-ps:
-       @: > address@hidden
-installcheck installdirs tags TAGS mostlyclean:
-       @: > address@hidden
-## These targets cannot be overridden like this:
-## install-strip distclean maintainer-clean
-END
-
-$ACLOCAL
-$AUTOCONF
-
-check_targets ()
-{
-  set -e
-  for target in \
-    all install install-strip uninstall clean distclean check \
-    info html dvi pdf ps \
-    install-info install-html install-dvi install-pdf install-ps \
-    installcheck installdirs tags TAGS mostlyclean maintainer-clean
-  do
-    $MAKE -n $target >stdout || { cat stdout; Exit 1; }
-    cat stdout
-    case $target in
-    install-* | installdirs | tags | TAGS ) ;;
-    *)
-      grep "stamp-$target$" stdout || Exit 1
-      test ! -f "stamp-$target$" || Exit 1
-      ;;
-    esac
-    case $target in
-    install-* | installdirs ) ;;
-    *)
-      grep "stamp-$target-sub" stdout || Exit 1
-      test ! -f "sub/stamp-$target-sub" || Exit 1
-      ;;
-    esac
-    case $target in
-    distclean | maintainer-clean ) ;;
-    *)
-      grep "should-not-be-executed" stdout || Exit 1
-      test ! -f "sub2/sub2-$target-should-not-be-executed" || Exit 1
-      ;;
-    esac
-  done
-}
-
-$AUTOMAKE -Wno-override
-./configure
-check_targets || Exit 1
-
-# Now, introduce BUILT_SOURCES into the toplevel Makefile
-# TODO: add BUILT_SOURCES to sub2, fix fallout.
-sed 's/##//' < Makefile.am > t
-mv -f t Makefile.am
-$AUTOMAKE -Wno-override --force Makefile
-./configure
-check_targets || Exit 1
-
-Exit 0
-- 
1.7.7.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]