Fourth batch
[gitweb.git] / t / t5580-clone-push-unc.sh
index b195f71ea98423711d57c6d31ea8eca5eb5bca5c..b3c8a92450bc0e9ba869563ef1a7a4c1362cebd6 100755 (executable)
@@ -1,14 +1,20 @@
 #!/bin/sh
 
-test_description='various UNC path tests (Windows-only)'
+test_description='various Windows-only path tests'
 . ./test-lib.sh
 
-if ! test_have_prereq MINGW; then
-       skip_all='skipping UNC path tests, requires Windows'
+if test_have_prereq CYGWIN
+then
+       alias winpwd='cygpath -aw .'
+elif test_have_prereq MINGW
+then
+       alias winpwd=pwd
+else
+       skip_all='skipping Windows-only path tests'
        test_done
 fi
 
-UNCPATH="$(pwd)"
+UNCPATH="$(winpwd)"
 case "$UNCPATH" in
 [A-Z]:*)
        # Use administrative share e.g. \\localhost\C$\git-sdk-64\usr\src\git
@@ -34,6 +40,11 @@ test_expect_success clone '
        git clone "file://$UNCPATH" clone
 '
 
+test_expect_success 'clone with backslashed path' '
+       BACKSLASHED="$(echo "$UNCPATH" | tr / \\\\)" &&
+       git clone "$BACKSLASHED" backslashed
+'
+
 test_expect_success push '
        (
                cd clone &&
@@ -45,4 +56,22 @@ test_expect_success push '
        test "$rev" = "$(git rev-parse --verify refs/heads/to-push)"
 '
 
+test_expect_success MINGW 'remote nick cannot contain backslashes' '
+       BACKSLASHED="$(winpwd | tr / \\\\)" &&
+       git ls-remote "$BACKSLASHED" >out 2>err &&
+       test_i18ngrep ! "unable to access" err
+'
+
+test_expect_success 'unc alternates' '
+       tree="$(git rev-parse HEAD:)" &&
+       mkdir test-unc-alternate &&
+       (
+               cd test-unc-alternate &&
+               git init &&
+               test_must_fail git show $tree &&
+               echo "$UNCPATH/.git/objects" >.git/objects/info/alternates &&
+               git show $tree
+       )
+'
+
 test_done