Re: t9200-git-cvsexportcommit.sh failed on CYGWIN
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:42:47
Subsystem:
the rest · Maintainer:
Linus Torvalds
Possibly related (same subject, not in this thread)
- 2016-06-15 · t9200-git-cvsexportcommit.sh failed on CYGWIN · SungHyun Nam <hidden>
- 2016-06-15 · Re: t9200-git-cvsexportcommit.sh failed on CYGWIN · Jakub Narebski <hidden>
- 2016-06-15 · Re: t9200-git-cvsexportcommit.sh failed on CYGWIN · SungHyun Nam <hidden>
SungHyun Nam [off-list ref] writes:
Jakub Narebski wrote: ...quoted
What filesystem? Some filesystems are just broken...NTFS (no FAT32 here). ... $ mkdir -p Å/goo mkdir: cannot create directory `Å/goo': No such file or directory
SungHyun Nam [off-list ref] writes:
Jakub Narebski wrote:quoted
SungHyun Nam wrote:quoted
Below is the test messages. BTW, I hope I can define 'NO_CVS_TESTS' to skip this test.... What filesystem? Some filesystems are just broken...NTFS (no FAT32 here). Anyway, I test it step by step manually, and then... $ cd tmp; mkdir t; cd t $ ls -l total 0 $ mkdir -p Å/goo mkdir: cannot create directory `Å/goo': No such file or directory
Some filesystems cannot use arbitrary sequence of non NUL bytes
as pathnames.
It would be handy to have a way to skip tests that the user
knows would not pass on his particular system.
I do not think that such a request should be named NO_CVS_TESTS,
though. It is not like NO_SVN_TESTS where your system does not
have svn installed. I think even on hanglized NTFS, CVS
operations on pathnames that use only portable pathname
characters should work.
I am considering doing this instead...
-- >8 --
GIT_SKIP_TESTS: allow users to omit tests that are know to break
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.
---diff --git a/t/test-lib.sh b/t/test-lib.sh
index ad2b6f6..98f69d8 100755
--- a/t/test-lib.sh
+++ b/t/test-lib.sh@@ -125,16 +125,43 @@ 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 "" }
@@ -142,13 +169,16 @@ test_expect_failure () { 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 "" }
@@ -156,13 +186,16 @@ test_expect_success () { 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 "" }
@@ -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