Files
Logseq-Installer/test/mocks/find
T
2026-07-06 21:51:48 +02:00

53 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Mock für find - steuert Datei-Erkennung
# - Bei Versions-Erkennung: simulierte Pfade aus State
# - Bei Cleanup mit -delete: echte Dateien löschen
MOCK_DIR="$(cd "$(dirname "$0")/../fixtures" && pwd)"
MOCK_STATE_FILE="${MOCK_DIR}/find_state"
# Echten find über absoluten Pfad aufrufen (vermeidet Rekursion über PATH)
REAL_FIND=""
for candidate in /usr/bin/find /bin/find /usr/local/bin/find; do
if [[ -x "$candidate" ]]; then
resolved="$(readlink -f "$candidate" 2>/dev/null || echo "$candidate")"
[[ "$resolved" != *test/mocks* ]] && REAL_FIND="$candidate" && break
fi
done
[[ -z "$REAL_FIND" ]] && REAL_FIND="/usr/bin/find"
if [[ -f "${MOCK_STATE_FILE}" ]]; then
# shellcheck source=/dev/null
source "${MOCK_STATE_FILE}"
fi
# Defaults
FIND_INSTALLED_VERSION="${FIND_INSTALLED_VERSION:-}"
FIND_FILES=()
# State parsen: FIND_FILES="file1|file2|file3"
if [[ -n "${FIND_FILES_RAW}" ]]; then
IFS='|' read -ra FIND_FILES <<< "${FIND_FILES_RAW}"
fi
# Bei -delete: echte find-Operation auf das Zielverzeichnis ausführen
# (löscht echte Dateien im Test-HOME)
if [[ "$*" == *"-delete"* ]]; then
"$REAL_FIND" "$@"
exit $?
fi
# Prüfen ob wir nach AppImages suchen (Versions-Erkennung)
if [[ "$*" == *"Logseq-linux-x64-*.AppImage"* ]] || [[ "$*" == *"Logseq-\*AppImage"* ]]; then
if [[ -n "${FIND_INSTALLED_VERSION}" ]]; then
# Simuliere installierte Version
echo "${MOCK_DIR}/Logseq-linux-x64-${FIND_INSTALLED_VERSION}.AppImage"
elif [[ ${#FIND_FILES[@]} -gt 0 ]]; then
for f in "${FIND_FILES[@]}"; do
echo "${MOCK_DIR}/${f}"
done
fi
exit 0
fi
# Fallback: echtes find aufrufen (für update-desktop-database etc.)
"$REAL_FIND" "$@"