Code

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 0f7f35ccc9e1315d3ac8e5d37df51c106847d920..344785dd7da05d68a4c268b2bf3a8eeb425912d0 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 da4b8d5a6fbf18adac103a5a6dd26ea3498c178f..a0944d662c7c6bc2ea331c8f7ce2a2b8b43bd530 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 055ad00f778eda1de02a418bbc602e580acdaca1..97ab02aceb8d9448ca5d4b13b94a8e3d7221375a 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 5322a3bf9703fab9f6b199dcd3f861b8e27c3ed3..7f60fd0b2e8904ec231975df3d65e66c9363ff45 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 27e2127afeeb0dd462a686254e60be74e9dd9c28..05cc8fdd0168d33d0fe6f2ca54aa4162a0c6cdd0 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 db46d53e8271c0410a0dbf53a3560a8b635e2853..a99e4d8b923cd0d85e5f7e875af4182d2238c9fb 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 ee84fc4884676ef683e6b3d2b6ad718dc2817445..361a10aeb17108049bf0e47b71153800727edd87 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 0aaf0ad84b05e1ee17e9789811ea06f2d2798556..b514cbb60665fef9d5cd67b8f7bcd8e8a3c2d0a5 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 b6eba6a83904a00724b7b550a9bc3b1b35825bee..7ad8465f8f89656bf0ce57feb45e12bc9cea5d65 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 29103f65dc60a81d071b9dd5600f416b3a31860f..147e634cd65b616ea6c8059897f191b761996c6f 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 a4da1196a93a00502c8945a14e3aafd628efda53..1a09e8db403adc9c65859b0a369ce9d06e00e6f4 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 e12fbea1b5df970f22a1526c4d9ba8fc32a027ba..918a21a2f41caf2e8ed6bb6120631ff0e4ccb0fc 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 55eb5f83f17c0ebfb537d390fd3913b7c89d65f4..34e5144eed8958a3f3341574ff8ecbcc6a4157a9 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 9bdf6596d82878f709a375084095697124a97609..40a95a149e4e84924d961d43f03115f466a9acc1 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 99ec13dd531c71299681acc3eb678b490ff68707..164d58c222088bd42becf07c044f51bf23eda8b6 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 b852e5898009bca0205c231033f8f72f48962b81..aff4348034b21644818fb8f938ef006001b0b099 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 0d3c1d5dd5c0f35f9cc44eab4fcba5ba2e36ddd7..923fcab7f96a76ee7038bfcb20b1270565bc2230 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 4360e77d317bfdaf7b40795859b4a023a5b89c13..fb3a270822c9a4ac2e4f79bfa71c784291859d4f 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 d5db75d826c8584e1d7f0f5ef298021fecd6f055..bab1a536f562c63db67035712588d3e9a5222649 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 7206817ca1c7a450b47f9a1d7d8a3af53452dac6..298200fa4cafc61b5f16f9337314a2b887593a36 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 37fe87541127887742530a8f8859f1dd369d3f34..a266ca56361347fe751495e1531b5a26e4733493 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 17e1bdc5a81ce4802f5074ddb9c1996c68fc97be..504884b9f8fab3bfa34e3dc97d3dc7aad297e626 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 fc675b50adfa945724cd7d17dbb6034df53426d3..2fb48d09edb47129d9cea8b9686e46a6d8f35615 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 7faa31a299f263b0628d4a23e4500d3e43e0fdda..fd19121372aecc0806e17e62d639855f391045d3 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 8c6d0b2f20c803574af273b9d7c4ffd41870adcc..b5d7fbc3815aed53ec50bdf7f5dbf2c796fed1fe 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 8afbdd4de2146be763f7454af66a15986490fe60..e4d1b6a0fa39d82d048f4dde62155a059173c5b4 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 3202e1de6d01bf3c36e82351c7f8426cc2bb44ab..cd3190c4a61f0404491b41a1b22f5143b63f4992 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 73dbc4360b58c95ae135577031fb8e60b3f395f7..ac943f5eeecd17dd1edc5834265df9e16e5032f2 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 9a83241c942f63c7c7b2f5c739164c34c80ab68d..171a754e53786bc94d248527bf995a15fa34e99b 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 1de83ef98fdcbfd63469e66ba4886c2477b983ff..196827e7eacf0584379630f528fb7a4400f2b865 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 640b3d2bb41636e271d0d55aabeade38ded612bb..ddc3d8db9f3b025d902fd0adc31e2467df3f31c8 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 570e0359e4739e178b1836887c53ddd78e3c8ec0..13766ab160e48d2b2ecb6e95079077e4a0704c2c 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 a9a558d292231bd4b372552df0364c63ece25299..5fb94fb3d61c2e26dcd448ac5106ec0f9a3a2283 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 1e9a2eb12bee55474f9bc10a7e31f5c01d6403f8..8cfdfe790f1e0bb7cd0ddb72a72a55073368ec60 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 99f69c6a0b8c7d3eea5211db333d0be41f9f5fa4..337ea59711ac7aca78a27afb92693f88e98aed9d 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 61bcb8fc86bc8b771a4843197a40fa38f350a1ff..ee39b36d78a9d5602be5d48ae34b1e5ce4927c79 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 86395065cfb8827ba5a999aa97cd5552a72322e3..36c457e7f2312774223f853aab0e3b055659e916 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 ed7b513f3e82706f6455bb32f4f19a5161bb0415..925bd0fbedf9865cef834460969c0a9fd2262437 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 b572ce3ab7f55e1258aa92b37e10a0d067c9d01d..2eff9cd68ce2f51618159df402bfb46382d44434 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 0b92726359530c32978a1b88384beace64eb154b..3787186703f51f75103824f562c3849483ceaae1 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
 }