Re: [PATCH v2 1/3] t0301: fixes for windows compatibility
From: Junio C Hamano <hidden>
Date: 2021-09-13 18:09:23
Johannes Schindelin [off-list ref] writes:
quoted
+test_path_is_socket () { + test -S "$1" +} + +# in Windows, Unix Sockets look just like regular files +uname_s=$(uname -s) +case $uname_s in +*MINGW*) + test_socket_exist=test_path_exists + ;; +*) + test_socket_exist=test_path_is_socket + ;; +esacA more canonical way would probably be to imitate what we do with `pwd` in `t/test-lib.sh`:
Thanks for bringing up a better practice. Referring to a variable when calling a function gives a "we are doing something unusual" signal and it loses half its abstraction value at the callsites. E.g.
quoted
test_when_finished "git credential-cache exit" && - test -S "$XDG_CACHE_HOME/git/credential/socket" && + $test_socket_exist "$XDG_CACHE_HOME/git/credential/socket" && test_path_is_missing "$HOME/.git-credential-cache/socket" && test_path_is_missing "$HOME/.cache/git/credential/socket"
I actually do not think it is so bad to just use test_path_exists
without per-platform conditional in this case, but if we want to be
more conservative, I agree with you that
case ... in
*MINGW*)
test_path_is_socket () {
test_path_exists "$@"
}
;;
*)
test_path_is_socket () {
test -S "$1"
}
;;
esac
is the way to go.