faa65dde2f
Gelöschte Dateien werden beim Download ins Backup-Verzeichnis verschoben
(${LOCAL_PHOTO_DIR}-bak, ${LOCAL_DARKTABLE_DB_DIR}-bak) statt permanent
gelöscht. Upload verwendet --delete ohne Backup. Backups älter als 2 Jahre
werden automatisch bereinigt. Safeguard verhindert --delete bei leerem
Quellverzeichnis. validate_path prüft jetzt auch lokale Pfade.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
115 lines
3.4 KiB
Bash
115 lines
3.4 KiB
Bash
#!/usr/bin/env bats
|
|
|
|
load helpers/setup
|
|
|
|
COMMON_SCRIPT="$BATS_TEST_DIRNAME/../scripts/darktable_common.sh"
|
|
|
|
@test "check_dependency schlaegt fehl wenn Tool fehlt" {
|
|
run bash -c "source '$COMMON_SCRIPT'; check_dependency nicht_existierendes_tool"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" == *"nicht_existierendes_tool"* ]]
|
|
[[ "$output" == *"sudo apt install"* ]]
|
|
}
|
|
|
|
@test "check_dependency besteht wenn Tool vorhanden" {
|
|
run bash -c "source '$COMMON_SCRIPT'; check_dependency bash"
|
|
[ "$status" -eq 0 ]
|
|
}
|
|
|
|
@test "load_config schlaegt fehl wenn .env fehlt" {
|
|
rm -f "$CONFIG_DIR/.env"
|
|
run bash -c "source '$COMMON_SCRIPT'; load_config"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" == *"nicht gefunden"* ]]
|
|
}
|
|
|
|
@test "load_config laedt .env erfolgreich" {
|
|
create_valid_env
|
|
run bash -c "source '$COMMON_SCRIPT'; load_config; echo \$SERVER_IP"
|
|
[ "$status" -eq 0 ]
|
|
[[ "$output" == *"192.168.1.100"* ]]
|
|
}
|
|
|
|
@test "validate_config schlaegt fehl wenn Variable leer" {
|
|
create_valid_env
|
|
echo "SERVER_IP=" >> "$CONFIG_DIR/.env"
|
|
run bash -c "source '$COMMON_SCRIPT'; load_config; validate_config"
|
|
[ "$status" -eq 1 ]
|
|
[[ "$output" == *"SERVER_IP"* ]]
|
|
}
|
|
|
|
@test "server_reachable gibt false zurueck wenn SSH fehlschlaegt" {
|
|
create_valid_env
|
|
run_with_stubs bash -c "
|
|
export SSH_STUB_FAIL=1
|
|
source '$COMMON_SCRIPT'
|
|
load_config
|
|
server_reachable
|
|
"
|
|
[ "$status" -eq 1 ]
|
|
}
|
|
|
|
@test "server_reachable gibt true zurueck wenn SSH erfolgreich" {
|
|
create_valid_env
|
|
run_with_stubs bash -c "
|
|
export SSH_STUB_FAIL=0
|
|
source '$COMMON_SCRIPT'
|
|
load_config
|
|
server_reachable
|
|
"
|
|
[ "$status" -eq 0 ]
|
|
}
|
|
|
|
@test "ask_user: j-Eingabe gibt Exit 0" {
|
|
TMP_SCRIPT=$(mktemp)
|
|
echo "source '$COMMON_SCRIPT'; ask_user 'Titel' 'Frage?'" > "$TMP_SCRIPT"
|
|
run bash -c "echo 'j' | env PATH='$STUBS_DIR:$PATH' bash '$TMP_SCRIPT'"
|
|
rm -f "$TMP_SCRIPT"
|
|
[ "$status" -eq 0 ]
|
|
}
|
|
|
|
@test "ask_user: n-Eingabe gibt Exit 1" {
|
|
TMP_SCRIPT=$(mktemp)
|
|
echo "source '$COMMON_SCRIPT'; ask_user 'Titel' 'Frage?'" > "$TMP_SCRIPT"
|
|
run bash -c "echo 'n' | env PATH='$STUBS_DIR:$PATH' bash '$TMP_SCRIPT'"
|
|
rm -f "$TMP_SCRIPT"
|
|
[ "$status" -eq 1 ]
|
|
}
|
|
|
|
# --- cleanup_old_backups ---
|
|
|
|
@test "cleanup_old_backups: nicht existierendes Verzeichnis gibt kein Fehler" {
|
|
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '/tmp/nonexistent_bak_$RANDOM'"
|
|
[ "$status" -eq 0 ]
|
|
}
|
|
|
|
@test "cleanup_old_backups: Datei juenger als 730 Tage bleibt erhalten" {
|
|
BACKUP="$BATS_TMPDIR/backup_test"
|
|
mkdir -p "$BACKUP"
|
|
touch "$BACKUP/recent.jpg"
|
|
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'"
|
|
[ "$status" -eq 0 ]
|
|
[ -f "$BACKUP/recent.jpg" ]
|
|
rm -rf "$BACKUP"
|
|
}
|
|
|
|
@test "cleanup_old_backups: Datei aelter als 730 Tage wird geloescht" {
|
|
BACKUP="$BATS_TMPDIR/backup_old"
|
|
mkdir -p "$BACKUP"
|
|
touch -d "3 years ago" "$BACKUP/old.jpg"
|
|
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'"
|
|
[ "$status" -eq 0 ]
|
|
[ ! -f "$BACKUP/old.jpg" ]
|
|
rm -rf "$BACKUP"
|
|
}
|
|
|
|
@test "cleanup_old_backups: leere Unterverzeichnisse werden entfernt" {
|
|
BACKUP="$BATS_TMPDIR/backup_empty"
|
|
mkdir -p "$BACKUP/subdir"
|
|
touch -d "3 years ago" "$BACKUP/subdir/old.jpg"
|
|
run bash -c "source '$COMMON_SCRIPT'; cleanup_old_backups '$BACKUP'"
|
|
[ "$status" -eq 0 ]
|
|
[ ! -d "$BACKUP/subdir" ]
|
|
rm -rf "$BACKUP"
|
|
}
|