Signed-off-by: Devin Lehmacher <lehmacdj@xxxxxxxxx> --- t/t0301-credential-cache.sh | 64 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/t/t0301-credential-cache.sh b/t/t0301-credential-cache.sh index 82c841121..664c6dda1 100755 --- a/t/t0301-credential-cache.sh +++ b/t/t0301-credential-cache.sh @@ -12,6 +12,7 @@ test -z "$NO_UNIX_SOCKETS" || { # don't leave a stale daemon running trap 'code=$?; git credential-cache exit; (exit $code); die' EXIT +# test that the daemon works with no special setup helper_test cache helper_test_timeout cache --timeout=1 @@ -20,4 +21,67 @@ helper_test_timeout cache --timeout=1 # our socket, leaving us with no way to access the daemon. git credential-cache exit +# we need to use rm -rf here since sometimes the daemon hasn't finished +# cleaning up after itself and rmdir fails +test_expect_success 'credential-cache --socket option overrides default location' ' + test_when_finished "rm -rf \"$HOME\"/dir/" && + check approve "cache --socket \"$HOME/dir/socket\"" <<-\EOF && + protocol=https + host=example.com + username=store-user + password=store-pass + EOF + test -S "$HOME/dir/socket" && + git credential-cache exit +' + +XDG_CACHE_HOME="$HOME/xdg" +export XDG_CACHE_HOME +# test behavior when XDG_CACHE_HOME is set +helper_test cache + +test_expect_success "use custom XDG_CACHE_HOME if set and default sockets are not created" ' + test -S "$XDG_CACHE_HOME/git/credential/socket" && + test_path_is_missing "$HOME/.git-credential-cache/socket" && + test_path_is_missing "$HOME/.cache/git/credential/socket" && + git credential-cache exit +' +unset XDG_CACHE_HOME + +test_expect_success "use custom XDG_CACHE_HOME even if xdg socket exists" ' + check approve cache <<-\EOF && + protocol=https + host=example.com + username=store-user + password=store-pass + EOF + test -S "$HOME/.cache/git/credential/socket" && + XDG_CACHE_HOME="$HOME/xdg" && + export XDG_CACHE_HOME && + check approve cache <<-\EOF && + protocol=https + host=example.com + username=store-user + password=store-pass + EOF + test -S "$HOME/xdg/git/credential/socket" && + git credential-cache exit && + unset XDG_CACHE_HOME +' + +# we need to use rm -rf here since sometimes the daemon hasn't finished +# cleaning up after itself and rmdir fails +test_expect_success 'use user socket if user directory exists' ' + test_when_finished "rm -rf \"$HOME/.git-credential-cache/\"" && + mkdir -p -m 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" && + git credential-cache exit +' + test_done -- 2.11.0