Skip to content

Commit

Permalink
GIT_SKIP_TESTS: allow users to omit tests that are known to break
Browse files Browse the repository at this point in the history
In some environments, certain tests have no way of succeeding
due to platform limitation, such as lack of 'unzip' program, or
filesystem that do not allow arbitrary sequence of non-NUL bytes
as pathnames.

You should be able to say something like

	$ cd t
	$ GIT_SKIP_TESTS=t9200.8 t9200-git-cvsexport-commit.sh

and even:

	$ GIT_SKIP_TESTS='t[0-4]??? t91?? t9200.8' make test

to omit such tests.  The value of the environment variable is a
SP separated list of patterns that tells which tests to skip,
and either can match the "t[0-9]{4}" part to skip the whole
test, or t[0-9]{4} followed by ".$number" to say which
particular test to skip.

Note that some tests in the existing test suite rely on previous
test item, so you cannot arbitrarily disable one and expect the
remainder of test to check what the test originally was intended
to check.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Dec 29, 2006
1 parent 3bd5c81 commit 04ece59
Showing 1 changed file with 70 additions and 18 deletions.
88 changes: 70 additions & 18 deletions t/test-lib.sh
Original file line number Diff line number Diff line change
Expand Up @@ -125,44 +125,77 @@ test_run_ () {
return 0
}

test_skip () {
this_test=$(expr "./$0" : '.*/\(t[0-9]*\)-[^/]*$')
this_test="$this_test.$(expr "$test_count" + 1)"
to_skip=
for skp in $GIT_SKIP_TESTS
do
case "$this_test" in
$skp)
to_skip=t
esac
done
case "$to_skip" in
t)
say >&3 "skipping test: $@"
test_count=$(expr "$test_count" + 1)
say "skip $test_count: $1"
: true
;;
*)
false
;;
esac
}

test_expect_failure () {
test "$#" = 2 ||
error "bug in the test script: not 2 parameters to test-expect-failure"
say >&3 "expecting failure: $2"
test_run_ "$2"
if [ "$?" = 0 -a "$eval_ret" != 0 -a "$eval_ret" -lt 129 ]
if ! test_skip "$@"
then
test_ok_ "$1"
else
test_failure_ "$@"
say >&3 "expecting failure: $2"
test_run_ "$2"
if [ "$?" = 0 -a "$eval_ret" != 0 -a "$eval_ret" -lt 129 ]
then
test_ok_ "$1"
else
test_failure_ "$@"
fi
fi
echo >&3 ""
}

test_expect_success () {
test "$#" = 2 ||
error "bug in the test script: not 2 parameters to test-expect-success"
say >&3 "expecting success: $2"
test_run_ "$2"
if [ "$?" = 0 -a "$eval_ret" = 0 ]
if ! test_skip "$@"
then
test_ok_ "$1"
else
test_failure_ "$@"
say >&3 "expecting success: $2"
test_run_ "$2"
if [ "$?" = 0 -a "$eval_ret" = 0 ]
then
test_ok_ "$1"
else
test_failure_ "$@"
fi
fi
echo >&3 ""
}

test_expect_code () {
test "$#" = 3 ||
error "bug in the test script: not 3 parameters to test-expect-code"
say >&3 "expecting exit code $1: $3"
test_run_ "$3"
if [ "$?" = 0 -a "$eval_ret" = "$1" ]
if ! test_skip "$@"
then
test_ok_ "$2"
else
test_failure_ "$@"
say >&3 "expecting exit code $1: $3"
test_run_ "$3"
if [ "$?" = 0 -a "$eval_ret" = "$1" ]
then
test_ok_ "$2"
else
test_failure_ "$@"
fi
fi
echo >&3 ""
}
Expand Down Expand Up @@ -223,3 +256,22 @@ test=trash
rm -fr "$test"
test_create_repo $test
cd "$test"

this_test=$(expr "./$0" : '.*/\(t[0-9]*\)-[^/]*$')
for skp in $GIT_SKIP_TESTS
do
to_skip=
for skp in $GIT_SKIP_TESTS
do
case "$this_test" in
$skp)
to_skip=t
esac
done
case "$to_skip" in
t)
say >&3 "skipping test $this_test altogether"
say "skip all tests in $this_test"
test_done
esac
done

0 comments on commit 04ece59

Please sign in to comment.