3bc2702b88
Use 'test_atexit' to run cleanup commands to stop the credentials helper at the end of the test script or upon interrupt or failure, as it is shorter, simpler, and more robust than registering such cleanup commands in the trap on EXIT in the test scripts. Signed-off-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
112 lines
2.8 KiB
Bash
Executable File
112 lines
2.8 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='credential-cache tests'
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-credential.sh
|
|
|
|
test -z "$NO_UNIX_SOCKETS" || {
|
|
skip_all='skipping credential-cache tests, unix sockets not available'
|
|
test_done
|
|
}
|
|
|
|
# don't leave a stale daemon running
|
|
test_atexit 'git credential-cache exit'
|
|
|
|
# test that the daemon works with no special setup
|
|
helper_test cache
|
|
|
|
test_expect_success 'socket defaults to ~/.cache/git/credential/socket' '
|
|
test_when_finished "
|
|
git credential-cache exit &&
|
|
rmdir -p .cache/git/credential/
|
|
" &&
|
|
test_path_is_missing "$HOME/.git-credential-cache" &&
|
|
test -S "$HOME/.cache/git/credential/socket"
|
|
'
|
|
|
|
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_when_finished "git credential-cache exit" &&
|
|
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"
|
|
'
|
|
unset XDG_CACHE_HOME
|
|
|
|
test_expect_success 'credential-cache --socket option overrides default location' '
|
|
test_when_finished "
|
|
git credential-cache exit --socket \"\$HOME/dir/socket\" &&
|
|
rmdir \"\$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"
|
|
'
|
|
|
|
test_expect_success "use custom XDG_CACHE_HOME even if xdg socket exists" '
|
|
test_when_finished "
|
|
git credential-cache exit &&
|
|
sane_unset XDG_CACHE_HOME
|
|
" &&
|
|
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 "$XDG_CACHE_HOME/git/credential/socket"
|
|
'
|
|
|
|
test_expect_success 'use user socket if user directory exists' '
|
|
test_when_finished "
|
|
git credential-cache exit &&
|
|
rmdir \"\$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"
|
|
'
|
|
|
|
test_expect_success SYMLINKS 'use user socket if user directory is a symlink to a directory' '
|
|
test_when_finished "
|
|
git credential-cache exit &&
|
|
rmdir \"\$HOME/dir/\" &&
|
|
rm \"\$HOME/.git-credential-cache\"
|
|
" &&
|
|
mkdir -p -m 700 "$HOME/dir/" &&
|
|
ln -s "$HOME/dir" "$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"
|
|
'
|
|
|
|
helper_test_timeout cache --timeout=1
|
|
|
|
test_done
|