automake-patches
[Top][All Lists]
Advanced

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

[FYI] {maint} tests: avoid spurious failures when @MKDIR_P@ points to "i


From: Stefano Lattarini
Subject: [FYI] {maint} tests: avoid spurious failures when @MKDIR_P@ points to "install-sh -d"
Date: Fri, 6 Jul 2012 15:36:55 +0200

* t/self-check-cleanup.tap: Several checks in this test were failing on
NetBSD 5.1.  That happened because on that system, '@MKDIR_P@' expands to
an "install-sh -d" invocation that references the $(builddir), and the
code trying to duplicate some of the Automake testsuite infrastructure
in the test subdirectory of this self test wasn't smart enough to cater
to that situation.  Granted, we could tweak the test case once more to
fix this Yet Another Spurious Failure, but at this point it has become
clear that the extra coverage offered by this test is not worth all the
hassle.  Just remove the test.  Since the testsuite is regularly run on
several systems and with different setups, most issues with the testsuite
framework will reveal themselves anyway; no actual need to unit-test them
in our testsuite, if that's too tricky.
* t/list-of-tests.mk: Adjust.

Signed-off-by: Stefano Lattarini <address@hidden>
---
 t/list-of-tests.mk       |    1 -
 t/self-check-cleanup.tap |  189 ----------------------------------------------
 2 files changed, 190 deletions(-)
 delete mode 100755 t/self-check-cleanup.tap

diff --git a/t/list-of-tests.mk b/t/list-of-tests.mk
index 852b87a..f3cd4e3 100644
--- a/t/list-of-tests.mk
+++ b/t/list-of-tests.mk
@@ -955,7 +955,6 @@ t/reqd.sh \
 t/reqd2.sh \
 t/repeated-options.sh \
 t/rulepat.sh \
-t/self-check-cleanup.tap \
 t/self-check-configure-help.sh \
 t/self-check-dir.tap \
 t/self-check-env-sanitize.tap \
diff --git a/t/self-check-cleanup.tap b/t/self-check-cleanup.tap
deleted file mode 100755
index 2c5a9a9..0000000
--- a/t/self-check-cleanup.tap
+++ /dev/null
@@ -1,189 +0,0 @@
-#! /bin/sh
-# Copyright (C) 2011-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
-# 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/>.
-
-# Sanity check for the automake testsuite.
-# Check creation/removal of temporary test working directory by './defs'.
-
-. ./defs || exit 1
-
-plan_ 43
-
-# We still need a little hack to make ./defs work outside automake's
-# tree 'tests' subdirectory.  Not a big deal.
-sed "s|^am_top_builddir=.*|am_top_builddir='$(pwd)'|" \
-  "$am_top_builddir"/defs-static >defs-static
-diff "$am_top_builddir"/defs-static defs-static \
-  && fatal_ "failed to edit defs-static"
-cp "$am_top_builddir"/defs .
-
-AM_TESTS_REEXEC=no; export AM_TESTS_REEXEC
-keep_testdirs=; unset keep_testdirs
-
-if ln -s defs foo && test -h foo; then
-  have_symlinks=yes
-else
-  have_symlinks=no
-fi
-export have_symlinks # Is used also by spawned shells.
-
-# Don't let a failure poison all subsequent tests.
-do_clean_setup ()
-{
-  # Don't try to be smart and use find here, that has caused issues
-  # and extra ERROR results in the past.  Be dumb and safe.
-  for d in t t/* t/*/* t/*/*/*; do
-    test ! -d $d || chmod u+rwx $d || :
-  done
-  rm -rf t
-}
-
-do_clean_setup
-
-# Exporting 'keep_testdirs' to "yes" in the environment should cause
-# the cleanup code not to be run, so that the temporary directories
-# are left on disk.
-command_ok_ '"keep_testdirs=yes" causes testdir to be kept around' eval '
-     env keep_testdirs=yes \
-       $AM_TEST_RUNNER_SHELL -c ". ./defs && echo okok >foo" t/dummy.sh \
-     && test -f t/dummy.dir/foo \
-     && test okok = $(cat t/dummy.dir/foo)'
-
-do_clean_setup
-
-# Check that pre-test cleanup works also with directories with
-# "null" permissions, and containing broken symlinks.
-mkdir t t/dummy.dir t/dummy.dir/sub
-(
-  cd t/dummy.dir
-  touch file sub/file
-  if test $have_symlinks = yes; then
-    ln -s file symlink
-    ln -s none brokenlink
-  fi
-)
-chmod 000 t/dummy.dir/sub/* t/dummy.dir/file
-test $have_symlinks = yes && chmod 000 t/dummy.dir/symlink
-chmod 500 t/dummy.dir/sub t/dummy.dir
-command_ok_ "pre-cleanup can deal with low-perms testdir" \
-            $AM_TEST_RUNNER_SHELL -c  '. ./defs' t/dummy.sh
-command_ok_ "pre-cleanup removed low-perms testdir" \
-            test ! -e t/dummy.dir
-
-do_clean_setup
-
-# Check that post-test cleanup works also with directories with
-# "null" permissions, and containing broken symlinks.
-command_ok_ "post-cleanup can deal with low-perms testdir" \
-            $AM_TEST_RUNNER_SHELL -c  '
-  stderr_fileno_=2
-  . ./defs || exit 1
-  set -e
-  mkdir dir dir/sub
-  cd dir
-  touch file sub/file
-  if test $have_symlinks = yes; then
-    ln -s file symlink
-    ln -s none brokenlink
-  fi
-  cd ..
-  chmod 000 dir/sub/* dir/file
-  test $have_symlinks = yes && chmod 000 dir/symlink
-  chmod 500 dir/sub dir
-  :
-' t/dummy.sh
-command_ok_ "post-cleanup removed null-perms testdir" \
-            test ! -e t/dummy.dir
-
-do_clean_setup
-
-# Check that pre-test cleanup does not unduly change the permissions of
-# files to which symlinks in the temporary test directory point to.
-if test $have_symlinks = yes; then
-
-  mkdir dir
-  chmod 000 dir
-  : > file
-  chmod 000 file
-
-  mkdir t t/dummy.dir
-  (cd t/dummy.dir && ln -s ../../dir ../../file .)
-
-  command_ok_ "pre-cleanup with testdir with zero-perms symlinks" \
-               $AM_TEST_RUNNER_SHELL -c '. ./defs' t/dummy.sh
-  ls -l # For debugging.
-  command_ok_ "pre-cleanup chmod doesn't follow symlinks to files" \
-               eval 'ls -l file | grep "^----------.*file"'
-  command_ok_ "pre-cleanup chmod doesn't follow symlinks to dirs" \
-              eval 'ls -ld dir | grep "^d---------.*dir"'
-
-  command_ok_ "post-cleanup with testdir with zero-perms symlinks" \
-              $AM_TEST_RUNNER_SHELL -c '
-    ocwd=$(pwd) || exit 1
-    stderr_fileno_=2
-    . ./defs || exit 1
-    ln -s "$ocwd/dir" "$ocwd/file" .
-  ' t/dummy.sh
-  ls -l # For debugging.
-  command_ok_ "post-cleanup chmod doesn't follow symlinks to files" \
-               eval 'ls -l file | grep "^----------.*file"'
-  command_ok_ "post-cleanup chmod doesn't follow symlinks to dirs" \
-              eval 'ls -ld dir | grep "^d---------.*dir"'
-
-  chmod u+rwx dir file
-  rmdir dir
-  rm -f file
-
-else # $have_symlinks = no
-  skip_row_ 6 "symlinks not supported"
-fi
-
-do_clean_setup
-
-# Check that the cleanup trap does not remove the temporary
-# test directory in case of test failure, skip, hard-error,
-# or when receiving a signal.
-
-for st in 1 2 3 10 77 99 126 127 130 255; do
-  command_ok_ "exit trap doesn't clobber exit status $st" \
-              not $AM_TEST_RUNNER_SHELL -c "
-    stderr_fileno_=2
-    . ./defs
-    : > foo
-    exit $st
-  " t/dummy.sh
-  command_ok_ "testdir not removed if exiting with status $st" \
-              test -f t/dummy.dir/foo
-  do_clean_setup
-done
-
-for sig in 1 2 3 9 13 15; do
-  if is_blocked_signal $sig; then
-    skip_row_ 2 -r "signal $sig seems blocked"
-    continue
-  fi
-  command_ok_ "exit trap doesn't clobber signal $sig" \
-              not $AM_TEST_RUNNER_SHELL -c "
-    stderr_fileno_=2
-    . ./defs
-    : > foo
-    kill -$sig \$\$
-  " t/dummy.sh
-  command_ok_ "testdir not removed if getting signal $sig" \
-              test -f t/dummy.dir/foo
-  do_clean_setup
-done
-
-:
-- 
1.7.9.5




reply via email to

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