automake-patches
[Top][All Lists]
Advanced

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

[FYI] {master} fixup: some weaknesses in a self-check test case


From: Stefano Lattarini
Subject: [FYI] {master} fixup: some weaknesses in a self-check test case
Date: Wed, 11 Apr 2012 21:39:40 +0200

* t/self-check-cleanup.tap: This test contained several buglets
introduced in the recent row of commits that converted the Automake
build system to a non-recursive setup.  Fix them.  Since we are at
it, enhance the test to cover also the use of the 'keep_testdirs'
environment variable in order to keep the temporary test directories
around.

Signed-off-by: Stefano Lattarini <address@hidden>
---
 t/self-check-cleanup.tap |   30 ++++++++++++++++++++----------
 1 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/t/self-check-cleanup.tap b/t/self-check-cleanup.tap
index 3ea5281..5ea1a6e 100755
--- a/t/self-check-cleanup.tap
+++ b/t/self-check-cleanup.tap
@@ -23,7 +23,7 @@ if test x"$sh_errexit_works" != x"yes"; then
   skip_all_ "$me: no working exit trap with 'set -e'"
 fi
 
-plan_ 42
+plan_ 43
 
 # We still need a little hack to make ./defs work outside automake's
 # tree 'tests' subdirectory.  Not a big deal.
@@ -48,11 +48,21 @@ do_clean ()
   # 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 t/$d || chmod u+rwx t/$d || :
+    test ! -d $d || chmod u+rwx $d || :
   done
   rm -rf t
 }
 
+# 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 '
+     keep_testdirs=yes $SHELL -c ". ./defs && echo okok >foo" t/dummy.sh \
+     && test -f t/dummy.dir/foo \
+     && test okok = `cat t/dummy.dir/foo`'
+
+do_clean
+
 # 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
@@ -68,11 +78,11 @@ 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" \
-            $SHELL -c  '. ./defs' dummy.sh
+            $SHELL -c  '. ./defs' t/dummy.sh
 command_ok_ "pre-cleanup removed low-perms testdir" \
-            eval 'test ! -f dummy.dir \
-               && test ! -d dummy.dir \
-               && test ! -r dummy.dir'
+            eval 'test ! -f t/dummy.dir \
+               && test ! -d t/dummy.dir \
+               && test ! -r t/dummy.dir'
 
 do_clean
 
@@ -97,9 +107,9 @@ command_ok_ "post-cleanup can deal with low-perms testdir" \
   :
 ' t/dummy.sh
 command_ok_ "post-cleanup removed null-perms testdir" \
-            eval 'test ! -f dummy.dir \
-               && test ! -d dummy.dir \
-               && test ! -r dummy.dir'
+            eval 'test ! -f t/dummy.dir \
+               && test ! -d t/dummy.dir \
+               && test ! -r t/dummy.dir'
 
 do_clean
 
@@ -116,7 +126,7 @@ if test $have_symlinks = yes; then
   (cd t/dummy.dir && ln -s ../../dir ../../file .)
 
   command_ok_ "pre-cleanup with testdir with zero-perms symlinks" \
-               $SHELL -c '. ./defs' dummy.sh
+               $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"'
-- 
1.7.9




reply via email to

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