test-lib: provide UTF8 behaviour as a prerequisite
authorMichael J Gruber <git@drmicha.warpmail.net>
Thu, 26 Jul 2012 13:39:56 +0000 (15:39 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 27 Jul 2012 17:11:14 +0000 (10:11 -0700)
UTF8 behaviour of the filesystem (conversion from nfd to nfc)  plays a
role in several tests and is tested in several tests. Therefore, move
the test from t0050 into the test lib and use the prerequisite in t0050.

Signed-off-by: Michael J Gruber <git@drmicha.warpmail.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/README
t/t0050-filesystem.sh
t/test-lib.sh

index 57256074481c7aae779051574aebbb547c9c3fa7..e4128e5769722473f7fd1024fdf8a5100bd8ccf6 100644 (file)
--- a/t/README
+++ b/t/README
@@ -629,6 +629,11 @@ use these, and "test_set_prereq" for how to define your own.
 
    Test is run on a case insensitive file system.
 
+ - UTF8_NFD_TO_NFC
+
+   Test is run on a filesystem which converts decomposed utf-8 (nfd)
+   to precomposed utf-8 (nfc).
+
 Tips for Writing Tests
 ----------------------
 
index b46ae72eac504619156caf1decc5d7d297492e0b..78816d9d935df478f5cdf93e06fae26cc5488910 100755 (executable)
@@ -7,22 +7,6 @@ test_description='Various filesystem issues'
 auml=$(printf '\303\244')
 aumlcdiar=$(printf '\141\314\210')
 
-unibad=
-test_expect_success 'see what we expect' '
-
-       test_unicode=test_expect_success &&
-       mkdir junk &&
-       >junk/"$auml" &&
-       case "$(cd junk && echo *)" in
-       "$aumlcdiar")
-               test_unicode=test_expect_failure &&
-               unibad=t
-               ;;
-       *)      ;;
-       esac &&
-       rm -fr junk
-'
-
 if test_have_prereq CASE_INSENSITIVE_FS
 then
        say "will test on a case insensitive filesystem"
@@ -31,8 +15,14 @@ else
        test_case=test_expect_success
 fi
 
-test "$unibad" &&
+if test_have_prereq UTF8_NFD_TO_NFC
+then
        say "will test on a unicode corrupting filesystem"
+       test_unicode=test_expect_failure
+else
+       test_unicode=test_expect_success
+fi
+
 test_have_prereq SYMLINKS ||
        say "will test on a filesystem lacking symbolic links"
 
index 81cf4dfb0481845df1ff7f53eebda786ef4f6d43..78c428619e99ea0225f61a1fe257e444d464ad0b 100644 (file)
@@ -670,6 +670,19 @@ test_lazy_prereq CASE_INSENSITIVE_FS '
        test "$(cat CamelCase)" != good
 '
 
+test_lazy_prereq UTF8_NFD_TO_NFC '
+       # check whether FS converts nfd unicode to nfc
+       auml=$(printf "\303\244")
+       aumlcdiar=$(printf "\141\314\210")
+       >"$auml" &&
+       case "$(echo *)" in
+       "$aumlcdiar")
+               true ;;
+       *)
+               false ;;
+       esac
+'
+
 # When the tests are run as root, permission tests will report that
 # things are writable when they shouldn't be.
 test -w / || test_set_prereq SANITY