Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: >> +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 >> + ;; >> +esac > > A 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. >> 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.