git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 1/3] t0301: fixes for windows compatibility

From
Carlo Marcelo Arenas Belón <carenas@gmail.com>
Date
Sep 14, 2021, 07:25 UTC
Message-ID
<20210914072600.11552-2-carenas@gmail.com>
In-Reply-To
<20210914072600.11552-1-carenas@gmail.com>

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>
---
v3:
* avoid using a variable to hold the function for testing and instead
  use the cleaner syntax suggested by Dscho
v2:
* avoid the confusing -f test as suggested by Bagas
* no more FLAG variable as suggested by Junio
 t/t0301-credential-cache.sh | 32 ++++++++++++++++++++++++--------
 1 file changed, 24 insertions(+), 8 deletions(-)
diff --git a/t/t0301-credential-cache.sh b/t/t0301-credential-cache.sh
index ebd5fa5249..698b7159f0 100755
--- a/t/t0301-credential-cache.sh
+++ b/t/t0301-credential-cache.sh
@@ -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
-- 
2.33.0.481.g26d3bed244
Previous: Carlo Marcelo Arenas BelónNext: Ævar Arnfjörð Bjarmason
Message 20 of 27 in “windows: allow building without NO_UNIX_SOCKETS”
  1. 0/3 windows: allow building without NO_UNIX_SOCKETSCarlo Marcelo Arenas Belón, Sep 12, 2021
  2. 1/3 t0301: fixes for windows compatibilityCarlo Marcelo Arenas Belón, Sep 12, 2021
  3. Junio C HamanoSep 13, 2021
  4. Bagas SanjayaSep 13, 2021
  5. Carlo ArenasSep 13, 2021
  6. Junio C HamanoSep 13, 2021
  7. 3/3 git-compat-util: include declaration for unix socketsCarlo Marcelo Arenas Belón, Sep 12, 2021
  8. 2/3 credential-cache: check for windows specific errorsCarlo Marcelo Arenas Belón, Sep 12, 2021
  9. Junio C HamanoSep 13, 2021
  10. 0/3 windows: allow building without NO_UNIX_SOCKETSCarlo Marcelo Arenas Belón, Sep 13, 2021
  11. 1/3 t0301: fixes for windows compatibilityCarlo Marcelo Arenas Belón, Sep 13, 2021
  12. Johannes SchindelinSep 13, 2021
  13. Junio C HamanoSep 13, 2021
  14. 2/3 credential-cache: check for windows specific errorsCarlo Marcelo Arenas Belón, Sep 13, 2021
  15. Johannes SchindelinSep 13, 2021
  16. 3/3 git-compat-util: include declaration for unix socketsCarlo Marcelo Arenas Belón, Sep 13, 2021
  17. Johannes SchindelinSep 13, 2021
  18. Johannes SchindelinSep 13, 2021
  19. 0/3 windows: allow building without NO_UNIX_SOCKETSCarlo Marcelo Arenas Belón, Sep 14, 2021
  20. 1/3 t0301: fixes for windows compatibilityCarlo Marcelo Arenas Belón, Sep 14, 2021
  21. Ævar Arnfjörð BjarmasonNov 2, 2021
  22. 2/3 credential-cache: check for windows specific errorsCarlo Marcelo Arenas Belón, Sep 14, 2021
  23. Junio C HamanoSep 14, 2021
  24. What should happen in credential-cache on recoverable error without SPAWN option?Junio C Hamano, Sep 14, 2021
  25. Jeff KingSep 14, 2021
  26. 3/3 git-compat-util: include declaration for unix sockets in windowsCarlo Marcelo Arenas Belón, Sep 14, 2021
  27. Junio C HamanoSep 14, 2021

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.