threads / patch / 47081

patcht5580: add Cygwin support

Subject: [PATCH] t5580: add Cygwin support

## tl;dr

4 messages between Oct 31, 2017 and Nov 1, 2017. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Adam Dinwoodie· Oct 31, 2017, 13:19 UTC · lore

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>
---
 t/t5580-clone-push-unc.sh | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)
Show changes to t/t5580-clone-push-unc.sh +8 −4
diff --git a/t/t5580-clone-push-unc.sh b/t/t5580-clone-push-unc.sh
index b322c2f72..47a9a7cda 100755
--- a/t/t5580-clone-push-unc.sh
+++ b/t/t5580-clone-push-unc.sh
@@ -3,12 +3,16 @@
 test_description='various Windows-only path tests'
 . ./test-lib.sh
 
-if ! test_have_prereq MINGW; then
+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
@@ -45,8 +49,8 @@ test_expect_success push '
 	test "$rev" = "$(git rev-parse --verify refs/heads/to-push)"
 '
 
-test_expect_success 'remote nick cannot contain backslashes' '
-	BACKSLASHED="$(pwd | tr / \\\\)" &&
+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
 '
-- 
2.14.3
Johannes Schindelin· Oct 31, 2017, 17:39 UTC · re: Adam Dinwoodie · lore

Re: [PATCH] t5580: add Cygwin support

Hi Adam,
On Tue, 31 Oct 2017, Adam Dinwoodie wrote:
Show 8 quoted lines
> 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.
Looks good!

Thank you, Dscho

Junio C Hamano· Nov 1, 2017, 01:44 UTC · re: Adam Dinwoodie · lore

Re: [PATCH] t5580: add Cygwin support

Adam Dinwoodie <adam@dinwoodie.org> writes:
Show 31 quoted lines
> 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>
> ---
>  t/t5580-clone-push-unc.sh | 12 ++++++++----
>  1 file changed, 8 insertions(+), 4 deletions(-)
>
> diff --git a/t/t5580-clone-push-unc.sh b/t/t5580-clone-push-unc.sh
> index b322c2f72..47a9a7cda 100755
> --- a/t/t5580-clone-push-unc.sh
> +++ b/t/t5580-clone-push-unc.sh
> @@ -3,12 +3,16 @@
>  test_description='various Windows-only path tests'
>  . ./test-lib.sh
>  
> -if ! test_have_prereq MINGW; then
> +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

The fact that UNCPATH matters only on windows-related platforms justifies the name used for this alias, I guess ;-)

Show 17 quoted lines
>  
> -UNCPATH="$(pwd)"
> +UNCPATH="$(winpwd)"
>  case "$UNCPATH" in
>  [A-Z]:*)
>  	# Use administrative share e.g. \\localhost\C$\git-sdk-64\usr\src\git
> @@ -45,8 +49,8 @@ test_expect_success push '
>  	test "$rev" = "$(git rev-parse --verify refs/heads/to-push)"
>  '
>  
> -test_expect_success 'remote nick cannot contain backslashes' '
> -	BACKSLASHED="$(pwd | tr / \\\\)" &&
> +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
>  '
Adam Dinwoodie· Nov 1, 2017, 10:17 UTC · re: Junio C Hamano · lore

Re: [PATCH] t5580: add Cygwin support

On Wed, Nov 01, 2017 at 10:44:22AM +0900, Junio C Hamano wrote:
Show 36 quoted lines
> Adam Dinwoodie <adam@dinwoodie.org> writes:
> 
> > 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>
> > ---
> >  t/t5580-clone-push-unc.sh | 12 ++++++++----
> >  1 file changed, 8 insertions(+), 4 deletions(-)
> >
> > diff --git a/t/t5580-clone-push-unc.sh b/t/t5580-clone-push-unc.sh
> > index b322c2f72..47a9a7cda 100755
> > --- a/t/t5580-clone-push-unc.sh
> > +++ b/t/t5580-clone-push-unc.sh
> > @@ -3,12 +3,16 @@
> >  test_description='various Windows-only path tests'
> >  . ./test-lib.sh
> >  
> > -if ! test_have_prereq MINGW; then
> > +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
> 
> The fact that UNCPATH matters only on windows-related platforms
> justifies the name used for this alias, I guess ;-)

I think I was going for "Windows-style pwd" or similar, given in both cases the alias produces something that looks like "C:\path\to\dir".

← back to recent threads