Skip to contentSkip to conversation

t9200-git-cvsexportcommit.sh failed on CYGWIN

DISCUSSION SungHyun Nam 3 participants 4 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

Hello,

Below is the test messages.

BTW, I hope I can define 'NO_CVS_TESTS' to skip this test.

Thanks,
namsh

$ ./t9200-git-cvsexportcommit.sh
Initialized empty Git repository in .git/
Created initial commit 15322570c631afb497138bc0c3d155f793535d35
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 empty
*   ok 1: New file
*   ok 2: Remove two files, add two and update two
*   ok 3: Fail to change binary more than one generation old
*   ok 4: Remove only binary files
*   ok 5: Remove only a text file
*   ok 6: New file with spaces in file name
*   ok 7: Update file with spaces in file name
* FAIL 8: File with non-ascii file name
        mkdir -p
Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö &&
              echo Foo
Quoted 1 line

Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö/gårdetsågårdet.txt

&&
git add
Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö/gårdetsågårdet.txt &&

              cp ../test9200a.png

Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö/gårdetsågårdet.png &&
git add
Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö/gårdetsågårdet.png &&

              git commit -a -m "Går det så går det" && \
              id=$(git rev-list --max-count=1 HEAD) &&
              (cd "$CVSWORK" &&
              git-cvsexportcommit -v -c $id &&
              test "$(echo $(sort
Å/goo/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/å/ä/ö/CVS/Entries|cut
-d/ -f2,3,5))" = "gårdetsågårdet.png/1.1/-kb gårdetsågårdet.txt/1.1/"
              )

* ok 9: Mismatching patch should fail
* ok 10: Retain execute bit
* failed 1 among 10 test(s)

#1 lore raw

[Cc: [email protected]]

Quoted 3 lines · SungHyun Nam

Below is the test messages.

BTW, I hope I can define 'NO_CVS_TESTS' to skip this test.

[...]

Quoted 3 lines

* ok 7: Update file with spaces in file name
* FAIL 8: File with non-ascii file name
mkdir -p

What filesystem? Some filesystems are just broken...

Signature · 3 lines
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
#2 lore raw
Quoted 6 lines · Jakub Narebski

[Cc: [email protected]]

Quoted 2 lines · SungHyun Nam

Below is the test messages.

Quoted 7 lines
Quoted 1 line

BTW, I hope I can define 'NO_CVS_TESTS' to skip this test.

[...]

Quoted 3 lines

* ok 7: Update file with spaces in file name
* FAIL 8: File with non-ascii file name
mkdir -p

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
$ ls -l
total 0
$ mkdir Å
mkdir: cannot create directory `Å': File exists
$ ls -l
total 0

I can create directory which contains Hangul (multibyte) characters.

$ mkdir ko_한글_lang
$ ls -l
total 0
drwxr-xr-x+ 2 namsh staff 0 Dec 29 08:41 ko_한글_lang/

Does it depend on Windows version? I use Korean version of Windows Home Edition. I also test it with 'CYGWIN=codepage:ansi' without luck.

Thanks,
namsh

#3 lore raw
Quoted 8 lines · SungHyun Nam

Jakub Narebski wrote:
...

Quoted 1 line

What filesystem? Some filesystems are just broken...

NTFS (no FAT32 here).
...

$ mkdir -p Å/goo
mkdir: cannot create directory `Å/goo': No such file or directory
Quoted 11 lines · SungHyun Nam
Quoted 7 lines · Jakub Narebski
Quoted 3 lines · SungHyun Nam

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).

Quoted 7 lines

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.

---

t/test-lib.sh +70 -18
index ad2b6f6..98f69d8 100755
@@ -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