+++ /dev/null
-#! /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
-
-: