git/t/t5580-clone-push-unc.sh
Adam Dinwoodie f21d60b429 t5580: add Cygwin support
t5580 tests that specifying Windows UNC paths works with Git.  Cygwin
supports UNC paths, albeit only using forward slashes, not backslashes,
so run the compatible tests on Cygwin as well as MinGW.

The only complication is Cygwin's `pwd`, which returns a *nix-style
path, and that's not suitable for calculating the UNC path to the
current directory.  Instead use Cygwin's `cygpath` utility to get the
Windows-style path.

Signed-off-by: Adam Dinwoodie <adam@dinwoodie.org>
Reviewed-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2017-11-01 10:44:55 +09:00

61 lines
1.3 KiB
Bash
Executable File

#!/bin/sh
test_description='various Windows-only path tests'
. ./test-lib.sh
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="$(winpwd)"
case "$UNCPATH" in
[A-Z]:*)
# Use administrative share e.g. \\localhost\C$\git-sdk-64\usr\src\git
# (we use forward slashes here because MSYS2 and Git accept them, and
# they are easier on the eyes)
UNCPATH="//localhost/${UNCPATH%%:*}\$/${UNCPATH#?:}"
test -d "$UNCPATH" || {
skip_all='could not access administrative share; skipping'
test_done
}
;;
*)
skip_all='skipping UNC path tests, cannot determine current path as UNC'
test_done
;;
esac
test_expect_success setup '
test_commit initial
'
test_expect_success clone '
git clone "file://$UNCPATH" clone
'
test_expect_success push '
(
cd clone &&
git checkout -b to-push &&
test_commit to-push &&
git push origin HEAD
) &&
rev="$(git -C clone rev-parse --verify refs/heads/to-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_done