tests: Skip tests in a way that makes sense under TAP
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Thu, 24 Jun 2010 17:44:48 +0000 (17:44 +0000)
committerJunio C Hamano <gitster@pobox.com>
Fri, 25 Jun 2010 17:08:20 +0000 (10:08 -0700)
SKIP messages are now part of the TAP plan. A TAP harness now knows
why a particular test was skipped and can report that information. The
non-TAP harness built into Git's test-lib did nothing special with
these messages, and is unaffected by these changes.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
40 files changed:
t/lib-git-svn.sh
t/lib-httpd.sh
t/t1304-default-acl.sh
t/t1509-root-worktree.sh
t/t2007-checkout-symlink.sh
t/t3300-funny-names.sh
t/t3302-notes-index-expensive.sh
t/t3600-rm.sh
t/t3701-add-interactive.sh
t/t3902-quoted.sh
t/t4004-diff-rename-symlink.sh
t/t4011-diff-symlink.sh
t/t4016-diff-quote.sh
t/t4023-diff-rename-typechange.sh
t/t4114-apply-typechange.sh
t/t4115-apply-symlink.sh
t/t4122-apply-symlink-inside.sh
t/t5302-pack-index.sh
t/t5503-tagfollow.sh
t/t5522-pull-symlink.sh
t/t5540-http-push.sh
t/t5541-http-push.sh
t/t5550-http-fetch.sh
t/t5551-http-fetch.sh
t/t5561-http-backend.sh
t/t5705-clone-2gb.sh
t/t6035-merge-dir-to-symlink.sh
t/t7004-tag.sh
t/t7006-pager.sh
t/t7800-difftool.sh
t/t9001-send-email.sh
t/t9100-git-svn-basic.sh
t/t9119-git-svn-info.sh
t/t9129-git-svn-i18n-commitencoding.sh
t/t9143-git-svn-gc.sh
t/t9200-git-cvsexportcommit.sh
t/t9400-git-cvsserver-server.sh
t/t9401-git-cvsserver-crlf.sh
t/t9600-cvsimport.sh
t/t9700-perl-git.sh

index 0f7f35c..344785d 100644 (file)
@@ -5,11 +5,11 @@ git_svn_id=git""-svn-id
 
 if test -n "$NO_SVN_TESTS"
 then
-       say 'skipping git svn tests, NO_SVN_TESTS defined'
+       skip_all='skipping git svn tests, NO_SVN_TESTS defined'
        test_done
 fi
 if ! test_have_prereq PERL; then
-       say 'skipping git svn tests, perl not available'
+       skip_all='skipping git svn tests, perl not available'
        test_done
 fi
 
index da4b8d5..a0944d6 100644 (file)
@@ -5,8 +5,7 @@
 
 if test -z "$GIT_TEST_HTTPD"
 then
-       say "skipping test, network testing disabled by default"
-       say "(define GIT_TEST_HTTPD to enable)"
+       skip_all="Network testing disabled (define GIT_TEST_HTTPD to enable)"
        test_done
 fi
 
index 055ad00..97ab02a 100755 (executable)
@@ -15,9 +15,12 @@ umask 077
 # is a good candidate: exists on all unices, and it has permission
 # anyway, so we don't create a security hole running the testsuite.
 
-if ! setfacl -m u:root:rwx .; then
-    say "Skipping ACL tests: unable to use setfacl"
-    test_done
+setfacl_out="$(setfacl -m u:root:rwx . 2>&1)"
+setfacl_ret=$?
+
+if [ $setfacl_ret != 0 ]; then
+       skip_all="Skipping ACL tests: unable to use setfacl (output: '$setfacl_out'; return code: '$setfacl_ret')"
+       test_done
 fi
 
 check_perms_and_acl () {
index 5322a3b..7f60fd0 100755 (executable)
@@ -99,17 +99,17 @@ test_foobar_foobar() {
 }
 
 if ! test_have_prereq POSIXPERM || ! [ -w / ]; then
-       say "Dangerous test skipped. Read this test if you want to execute it"
+       skip_all="Dangerous test skipped. Read this test if you want to execute it"
        test_done
 fi
 
 if [ "$IKNOWWHATIAMDOING" != "YES" ]; then
-       say "You must set env var IKNOWWHATIAMDOING=YES in order to run this test"
+       skip_all="You must set env var IKNOWWHATIAMDOING=YES in order to run this test"
        test_done
 fi
 
 if [ "$UID" = 0 ]; then
-       say "No you can't run this with root"
+       skip_all="No you can't run this with root"
        test_done
 fi
 
index 27e2127..05cc8fd 100755 (executable)
@@ -8,7 +8,7 @@ test_description='git checkout to switch between branches with symlink<->dir'
 
 if ! test_have_prereq SYMLINKS
 then
-       say "symbolic links not supported - skipping tests"
+       skip_all="symbolic links not supported - skipping tests"
        test_done
 fi
 
index db46d53..a99e4d8 100755 (executable)
@@ -26,7 +26,7 @@ echo 'Foo Bar Baz' >"$p2"
 
 test -f "$p1" && cmp "$p0" "$p1" || {
        # since FAT/NTFS does not allow tabs in filenames, skip this test
-       say 'Your filesystem does not allow tabs in filenames, test skipped.'
+       skip_all='Your filesystem does not allow tabs in filenames, test skipped.'
        test_done
 }
 
index ee84fc4..361a10a 100755 (executable)
@@ -8,7 +8,7 @@ test_description='Test commit notes index (expensive!)'
 . ./test-lib.sh
 
 test -z "$GIT_NOTES_TIMING_TESTS" && {
-       say Skipping timing tests
+       skip_all="Skipping timing tests"
        test_done
        exit
 }
index 0aaf0ad..b514cbb 100755 (executable)
@@ -39,7 +39,7 @@ if test -f test-file
 then
        test_set_prereq RO_DIR
 else
-       say 'skipping removal failure test (perhaps running as root?)'
+       skip_all='skipping removal failure test (perhaps running as root?)'
 fi
 chmod 775 .
 rm -f test-file
index b6eba6a..7ad8465 100755 (executable)
@@ -4,7 +4,7 @@ test_description='add -i basic tests'
 . ./test-lib.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping git add -i tests, perl not available'
+       skip_all='skipping git add -i tests, perl not available'
        test_done
 fi
 
@@ -154,7 +154,7 @@ rm -f .gitignore
 
 if test "$(git config --bool core.filemode)" = false
 then
-       say 'skipping filemode tests (filesystem does not properly support modes)'
+       say 'skipping filemode tests (filesystem does not properly support modes)'
 else
        test_set_prereq FILEMODE
 fi
index 29103f6..147e634 100755 (executable)
@@ -17,7 +17,7 @@ DQ='"'
 echo foo 2>/dev/null > "Name and an${HT}HT"
 test -f "Name and an${HT}HT" || {
        # since FAT/NTFS does not allow tabs in filenames, skip this test
-       say 'Your filesystem does not allow tabs in filenames, test skipped.'
+       skip_all='Your filesystem does not allow tabs in filenames, test skipped.'
        test_done
 }
 
index a4da119..1a09e8d 100755 (executable)
@@ -14,7 +14,7 @@ by an edit for them.
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index e12fbea..918a21a 100755 (executable)
@@ -11,7 +11,7 @@ test_description='Test diff of symlinks.
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index 55eb5f8..34e5144 100755 (executable)
@@ -14,7 +14,7 @@ P2='pathname with SP'
 P3='pathname
 with LF'
 : 2>/dev/null >"$P1" && test -f "$P1" && rm -f "$P1" || {
-       say 'Your filesystem does not allow tabs in filenames, test skipped.'
+       skip_all='Your filesystem does not allow tabs in filenames, test skipped.'
        test_done
 }
 
index 9bdf659..40a95a1 100755 (executable)
@@ -6,7 +6,7 @@ test_description='typechange rename detection'
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index 99ec13d..164d58c 100755 (executable)
@@ -11,7 +11,7 @@ test_description='git apply should not get confused with type changes.
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index b852e58..aff4348 100755 (executable)
@@ -11,7 +11,7 @@ test_description='git apply symlinks and partial files
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index 0d3c1d5..923fcab 100755 (executable)
@@ -5,7 +5,7 @@ test_description='apply to deeper directory without getting fooled with symlink'
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index 4360e77..fb3a270 100755 (executable)
@@ -74,7 +74,7 @@ if msg=$(git verify-pack -v "test-3-${pack3}.pack" 2>&1) ||
 then
        test_set_prereq OFF64_T
 else
-       say "skipping tests concerning 64-bit offsets"
+       say "skipping tests concerning 64-bit offsets"
 fi
 
 test_expect_success OFF64_T \
index d5db75d..bab1a53 100755 (executable)
@@ -6,7 +6,7 @@ test_description='test automatic tag following'
 
 case $(uname -s) in
 *MINGW*)
-       say "GIT_DEBUG_SEND_PACK not supported - skipping tests"
+       skip_all="GIT_DEBUG_SEND_PACK not supported - skipping tests"
        test_done
 esac
 
index 7206817..298200f 100755 (executable)
@@ -6,7 +6,7 @@ test_description='pulling from symlinked subdir'
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index 37fe875..a266ca5 100755 (executable)
@@ -11,7 +11,7 @@ This test runs various sanity checks on http-push.'
 
 if git http-push > /dev/null 2>&1 || [ $? -eq 128 ]
 then
-       say "skipping test, USE_CURL_MULTI is not defined"
+       skip_all="skipping test, USE_CURL_MULTI is not defined"
        test_done
 fi
 
index 17e1bdc..504884b 100755 (executable)
@@ -7,7 +7,7 @@ test_description='test smart pushing over http via http-backend'
 . ./test-lib.sh
 
 if test -n "$NO_CURL"; then
-       say 'skipping test, git built without http support'
+       skip_all='skipping test, git built without http support'
        test_done
 fi
 
index fc675b5..2fb48d0 100755 (executable)
@@ -4,7 +4,7 @@ test_description='test dumb fetching over http via static file'
 . ./test-lib.sh
 
 if test -n "$NO_CURL"; then
-       say 'skipping test, git built without http support'
+       skip_all='skipping test, git built without http support'
        test_done
 fi
 
index 7faa31a..fd19121 100755 (executable)
@@ -4,7 +4,7 @@ test_description='test smart fetching over http via http-backend'
 . ./test-lib.sh
 
 if test -n "$NO_CURL"; then
-       say 'skipping test, git built without http support'
+       skip_all='skipping test, git built without http support'
        test_done
 fi
 
index 8c6d0b2..b5d7fbc 100755 (executable)
@@ -4,7 +4,7 @@ test_description='test git-http-backend'
 . ./test-lib.sh
 
 if test -n "$NO_CURL"; then
-       say 'skipping test, git built without http support'
+       skip_all='skipping test, git built without http support'
        test_done
 fi
 
index 8afbdd4..e4d1b6a 100755 (executable)
@@ -4,7 +4,7 @@ test_description='Test cloning a repository larger than 2 gigabyte'
 . ./test-lib.sh
 
 test -z "$GIT_TEST_CLONE_2GB" &&
-say "Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t" &&
+skip_all="Skipping expensive 2GB clone test; enable it with GIT_TEST_CLONE_2GB=t" &&
 test_done &&
 exit
 
index 3202e1d..cd3190c 100755 (executable)
@@ -5,7 +5,7 @@ test_description='merging when a directory was replaced with a symlink'
 
 if ! test_have_prereq SYMLINKS
 then
-       say 'Symbolic links not supported, skipping tests.'
+       skip_all='Symbolic links not supported, skipping tests.'
        test_done
 fi
 
index 73dbc43..ac943f5 100755 (executable)
@@ -583,7 +583,7 @@ test_expect_success \
 # subsequent tests require gpg; check if it is available
 gpg --version >/dev/null 2>/dev/null
 if [ $? -eq 127 ]; then
-       say "gpg not found - skipping tag signing and verification tests"
+       say "gpg not found - skipping tag signing and verification tests"
 else
        # As said here: http://www.gnupg.org/documentation/faqs.html#q6.19
        # the gpg version 1.0.6 didn't parse trust packets correctly, so for
index 9a83241..171a754 100755 (executable)
@@ -36,7 +36,7 @@ then
        }
        test_set_prereq TTY
 else
-       say no usable terminal, so skipping some tests
+       say "# no usable terminal, so skipping some tests"
 fi
 
 test_expect_success 'setup' '
index 1de83ef..196827e 100755 (executable)
@@ -11,7 +11,7 @@ Testing basic diff tool invocation
 . ./test-lib.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping difftool tests, perl not available'
+       skip_all='skipping difftool tests, perl not available'
        test_done
 fi
 
index 640b3d2..ddc3d8d 100755 (executable)
@@ -4,7 +4,7 @@ test_description='git send-email'
 . ./test-lib.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping git send-email tests, perl not available'
+       skip_all='skipping git send-email tests, perl not available'
        test_done
 fi
 
@@ -58,7 +58,7 @@ test_no_confirm () {
 # Exit immediately to prevent hang if a no-confirm test fails
 check_no_confirm () {
        test -f no_confirm_okay || {
-               say 'No confirm test failed; skipping remaining tests to prevent hanging'
+               skip_all='confirm test failed; skipping remaining tests to prevent hanging'
                test_done
        }
 }
index 570e035..13766ab 100755 (executable)
@@ -15,7 +15,7 @@ case "$GIT_SVN_LC_ALL" in
        test_set_prereq UTF8
        ;;
 *)
-       say "UTF-8 locale not set, some tests skipped ($GIT_SVN_LC_ALL)"
+       say "UTF-8 locale not set, some tests skipped ($GIT_SVN_LC_ALL)"
        ;;
 esac
 
index a9a558d..5fb94fb 100755 (executable)
@@ -13,7 +13,7 @@ case $v in
 1.[456].*)
        ;;
 *)
-       say "skipping svn-info test (SVN version: $v not supported)"
+       skip_all="skipping svn-info test (SVN version: $v not supported)"
        test_done
        ;;
 esac
index 1e9a2eb..8cfdfe7 100755 (executable)
@@ -23,7 +23,7 @@ if test -n "$a_utf8_locale"
 then
        test_set_prereq UTF8
 else
-       say "UTF-8 locale not available, some tests are skipped"
+       say "UTF-8 locale not available, some tests are skipped"
 fi
 
 compare_svn_head_with () {
index 99f69c6..337ea59 100755 (executable)
@@ -43,7 +43,7 @@ then
                 gunzip .git/svn/refs/remotes/git-svn/unhandled.log.gz
                '
 else
-       say "Perl Compress::Zlib unavailable, skipping gunzip test"
+       say "Perl Compress::Zlib unavailable, skipping gunzip test"
 fi
 
 test_expect_success 'git svn gc does not change unhandled.log files' '
index 61bcb8f..ee39b36 100755 (executable)
@@ -7,14 +7,14 @@ test_description='Test export of commits to CVS'
 . ./test-lib.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping git cvsexportcommit tests, perl not available'
+       skip_all='skipping git cvsexportcommit tests, perl not available'
        test_done
 fi
 
 cvs >/dev/null 2>&1
 if test $? -ne 1
 then
-    say 'skipping git cvsexportcommit tests, cvs not found'
+    skip_all='skipping git cvsexportcommit tests, cvs not found'
     test_done
 fi
 
index 8639506..36c457e 100755 (executable)
@@ -11,17 +11,17 @@ cvs CLI client via git-cvsserver server'
 . ./test-lib.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping git cvsserver tests, perl not available'
+       skip_all='skipping git cvsserver tests, perl not available'
        test_done
 fi
 cvs >/dev/null 2>&1
 if test $? -ne 1
 then
-    say 'skipping git-cvsserver tests, cvs not found'
+    skip_all='skipping git-cvsserver tests, cvs not found'
     test_done
 fi
 "$PERL_PATH" -e 'use DBI; use DBD::SQLite' >/dev/null 2>&1 || {
-    say 'skipping git-cvsserver tests, Perl SQLite interface unavailable'
+    skip_all='skipping git-cvsserver tests, Perl SQLite interface unavailable'
     test_done
 }
 
index ed7b513..925bd0f 100755 (executable)
@@ -41,16 +41,16 @@ not_present() {
 cvs >/dev/null 2>&1
 if test $? -ne 1
 then
-    say 'skipping git-cvsserver tests, cvs not found'
+    skip_all='skipping git-cvsserver tests, cvs not found'
     test_done
 fi
 if ! test_have_prereq PERL
 then
-    say 'skipping git-cvsserver tests, perl not available'
+    skip_all='skipping git-cvsserver tests, perl not available'
     test_done
 fi
 "$PERL_PATH" -e 'use DBI; use DBD::SQLite' >/dev/null 2>&1 || {
-    say 'skipping git-cvsserver tests, Perl SQLite interface unavailable'
+    skip_all='skipping git-cvsserver tests, Perl SQLite interface unavailable'
     test_done
 }
 
index b572ce3..2eff9cd 100755 (executable)
@@ -4,7 +4,7 @@ test_description='git cvsimport basic tests'
 . ./lib-cvs.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping git cvsimport tests, perl not available'
+       skip_all='skipping git cvsimport tests, perl not available'
        test_done
 fi
 
index 0b92726..3787186 100755 (executable)
@@ -7,12 +7,12 @@ test_description='perl interface (Git.pm)'
 . ./test-lib.sh
 
 if ! test_have_prereq PERL; then
-       say 'skipping perl interface tests, perl not available'
+       skip_all='skipping perl interface tests, perl not available'
        test_done
 fi
 
 "$PERL_PATH" -MTest::More -e 0 2>/dev/null || {
-       say "Perl Test::More unavailable, skipping test"
+       skip_all="Perl Test::More unavailable, skipping test"
        test_done
 }