]> git.ipfire.org Git - thirdparty/git.git/commitdiff
t0301: fixes for windows compatibility
authorCarlo Marcelo Arenas Belón <carenas@gmail.com>
Tue, 14 Sep 2021 07:25:58 +0000 (00:25 -0700)
committerJunio C Hamano <gitster@pobox.com>
Tue, 14 Sep 2021 16:30:53 +0000 (09:30 -0700)
In preparation for a future patch that will allow building with
Unix Sockets in Windows, workaround a couple of issues from the
Mingw-W64 compatibility layer.

test -S is not able to detect that a file is a socket, so use
test -e instead (through a library function).

`mkdir -m` can't represent a valid ACL directly and fails with
permission problems, so instead call mkdir followed by chmod, which
has been enhanced to do so.

The last invocation of mkdir would likely need the same treatment
but SYMLINK is unlikely to be enabled on Windows so it has been
punted for now.

Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t0301-credential-cache.sh

index ebd5fa5249ca276b739977739e8dea27aa6728aa..698b7159f030905fb63ce4f6856d7ecf49f50b02 100755 (executable)
@@ -9,6 +9,21 @@ test -z "$NO_UNIX_SOCKETS" || {
        test_done
 }
 
+uname_s=$(uname -s)
+case $uname_s in
+*MINGW*)
+       test_path_is_socket () {
+               # `test -S` cannot detect Win10's Unix sockets
+               test_path_exists "$1"
+       }
+       ;;
+*)
+       test_path_is_socket () {
+               test -S "$1"
+       }
+       ;;
+esac
+
 # don't leave a stale daemon running
 test_atexit 'git credential-cache exit'
 
@@ -21,7 +36,7 @@ test_expect_success 'socket defaults to ~/.cache/git/credential/socket' '
                rmdir -p .cache/git/credential/
        " &&
        test_path_is_missing "$HOME/.git-credential-cache" &&
-       test -S "$HOME/.cache/git/credential/socket"
+       test_path_is_socket "$HOME/.cache/git/credential/socket"
 '
 
 XDG_CACHE_HOME="$HOME/xdg"
@@ -31,7 +46,7 @@ helper_test cache
 
 test_expect_success "use custom XDG_CACHE_HOME if set and default sockets are not created" '
        test_when_finished "git credential-cache exit" &&
-       test -S "$XDG_CACHE_HOME/git/credential/socket" &&
+       test_path_is_socket "$XDG_CACHE_HOME/git/credential/socket" &&
        test_path_is_missing "$HOME/.git-credential-cache/socket" &&
        test_path_is_missing "$HOME/.cache/git/credential/socket"
 '
@@ -48,7 +63,7 @@ test_expect_success 'credential-cache --socket option overrides default location
        username=store-user
        password=store-pass
        EOF
-       test -S "$HOME/dir/socket"
+       test_path_is_socket "$HOME/dir/socket"
 '
 
 test_expect_success "use custom XDG_CACHE_HOME even if xdg socket exists" '
@@ -62,7 +77,7 @@ test_expect_success "use custom XDG_CACHE_HOME even if xdg socket exists" '
        username=store-user
        password=store-pass
        EOF
-       test -S "$HOME/.cache/git/credential/socket" &&
+       test_path_is_socket "$HOME/.cache/git/credential/socket" &&
        XDG_CACHE_HOME="$HOME/xdg" &&
        export XDG_CACHE_HOME &&
        check approve cache <<-\EOF &&
@@ -71,7 +86,7 @@ test_expect_success "use custom XDG_CACHE_HOME even if xdg socket exists" '
        username=store-user
        password=store-pass
        EOF
-       test -S "$XDG_CACHE_HOME/git/credential/socket"
+       test_path_is_socket "$XDG_CACHE_HOME/git/credential/socket"
 '
 
 test_expect_success 'use user socket if user directory exists' '
@@ -79,14 +94,15 @@ test_expect_success 'use user socket if user directory exists' '
                git credential-cache exit &&
                rmdir \"\$HOME/.git-credential-cache/\"
        " &&
-       mkdir -p -m 700 "$HOME/.git-credential-cache/" &&
+       mkdir -p "$HOME/.git-credential-cache/" &&
+       chmod 700 "$HOME/.git-credential-cache/" &&
        check approve cache <<-\EOF &&
        protocol=https
        host=example.com
        username=store-user
        password=store-pass
        EOF
-       test -S "$HOME/.git-credential-cache/socket"
+       test_path_is_socket "$HOME/.git-credential-cache/socket"
 '
 
 test_expect_success SYMLINKS 'use user socket if user directory is a symlink to a directory' '
@@ -103,7 +119,7 @@ test_expect_success SYMLINKS 'use user socket if user directory is a symlink to
        username=store-user
        password=store-pass
        EOF
-       test -S "$HOME/.git-credential-cache/socket"
+       test_path_is_socket "$HOME/.git-credential-cache/socket"
 '
 
 helper_test_timeout cache --timeout=1