diff --git a/src/downgrade b/src/downgrade index 3b9ae76..1b03c6f 100755 --- a/src/downgrade +++ b/src/downgrade @@ -91,13 +91,13 @@ get_real_user_home() { } detect_aur_caches() { - local home - home=$(get_real_user_home) + local cache_home + cache_home="${XDG_CACHE_HOME:-$(get_real_user_home)/.cache}" - [[ -z "$home" ]] && return 0 + [[ -z "$cache_home" ]] && return 0 - [[ -d "$home/.cache/yay" ]] && printf '%s\n' "$home/.cache/yay" - [[ -d "$home/.cache/paru/clone" ]] && printf '%s\n' "$home/.cache/paru/clone" + [[ -d "$cache_home/yay" ]] && printf '%s\n' "$cache_home/yay" + [[ -d "$cache_home/paru/clone" ]] && printf '%s\n' "$cache_home/paru/clone" } currently_installed() { diff --git a/test/aur_fallback/detect_aur_caches.t b/test/aur_fallback/detect_aur_caches.t index c5ce8fb..8cc8bd4 100644 --- a/test/aur_fallback/detect_aur_caches.t +++ b/test/aur_fallback/detect_aur_caches.t @@ -28,6 +28,21 @@ Detects both when both present /tmp/*/yay (glob) /tmp/*/paru/clone (glob) +Detects both when both present, with xdg taking precedence + + $ fake_home=$(mktemp -d --suffix @home) + $ fake_xdg=$(mktemp -d --suffix @xdg) + > XDG_CACHE_HOME="$fake_xdg" + > mkdir -p "$fake_xdg/yay" + > mkdir -p "$fake_xdg/paru/clone" + > mkdir -p "$fake_home/.cache/yay" + > mkdir -p "$fake_home/.cache/paru/clone" + > get_real_user_home() { echo "$fake_home"; } + > detect_aur_caches + > XDG_CACHE_HOME= + /tmp/*@xdg/yay (glob) + /tmp/*@xdg/paru/clone (glob) + Returns nothing when neither present $ fake_home=$(mktemp -d) diff --git a/test/helper.sh b/test/helper.sh index aa61bac..abbfc8e 100644 --- a/test/helper.sh +++ b/test/helper.sh @@ -21,6 +21,7 @@ export DOWNGRADE_FROM_ALA=0 export DOWNGRADE_FROM_CACHE=0 export DOWNGRADE_CONF="$SRCDIR/test/conf/downgrade_test.conf" export PACIGNORE_DEFAULT_CHECK=1 +export XDG_CACHE_HOME="" # Stub functions that won't work (on CI) or need different behavior. pacsort() { cat; }