Refactoring & tests
This commit is contained in:
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/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="/home/tim/Dokumente/Sourcen/Logseq-Installer/test/fixtures"
|
||||
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" "$@"
|
||||
Reference in New Issue
Block a user