#!/usr/bin/env bats load helpers/setup WRAPPER_SCRIPT="$BATS_TEST_DIRNAME/../scripts/darktable_wrapper.sh" setup() { create_valid_env mkdir -p "$HOME/.local/bin" # Sync-Stub: tut nichts cat > "$HOME/.local/bin/darktable_sync.sh" <<'EOF' #!/bin/bash exit 0 EOF chmod +x "$HOME/.local/bin/darktable_sync.sh" # Lokale Stubs in einem eigenen Verzeichnis pro Test (kein Überschreiben der globalen Stubs) LOCAL_STUBS="$BATS_TMPDIR/stubs" mkdir -p "$LOCAL_STUBS" export LOCAL_STUBS # Alle Stubs kopieren (verhindert echte Dialoge und GUI-Aufrufe) cp "$BATS_TEST_DIRNAME/stubs/ssh" "$LOCAL_STUBS/ssh" cp "$BATS_TEST_DIRNAME/stubs/notify-send" "$LOCAL_STUBS/notify-send" cp "$BATS_TEST_DIRNAME/stubs/darktable" "$LOCAL_STUBS/darktable" cp "$BATS_TEST_DIRNAME/stubs/pgrep" "$LOCAL_STUBS/pgrep" cp "$BATS_TEST_DIRNAME/stubs/zenity" "$LOCAL_STUBS/zenity" cp "$BATS_TEST_DIRNAME/stubs/kdialog" "$LOCAL_STUBS/kdialog" chmod +x "$LOCAL_STUBS/"* export DISPLAY=:99 } @test "Server nicht erreichbar + Dialog abgelehnt: kein Darktable-Start, Exit 0" { run env PATH="$LOCAL_STUBS:$PATH" SSH_STUB_FAIL=1 \ bash -c "echo 'n' | bash '$WRAPPER_SCRIPT'" [ "$status" -eq 0 ] } @test "Server nicht erreichbar + Dialog bestaetigt: Darktable startet" { STARTED_FILE="$BATS_TMPDIR/darktable_started" cat > "$LOCAL_STUBS/darktable" < "$SSH_CALL_COUNT" cat > "$LOCAL_STUBS/ssh" < "$SSH_CALL_COUNT" # Ab Aufruf 3 fehlschlagen (Post-Sync-Erreichbarkeitstest) if [ "\$count" -ge 3 ]; then exit 1; fi exit 0 EOF chmod +x "$LOCAL_STUBS/ssh" run env PATH="$LOCAL_STUBS:$PATH" SSH_STUB_FAIL=0 bash "$WRAPPER_SCRIPT" [ -f "$CONFIG_DIR/sync_pending" ] } @test "Darktable laeuft bereits: Abbruch mit Exit 1" { run env PATH="$LOCAL_STUBS:$PATH" PGREP_STUB_FOUND=1 bash "$WRAPPER_SCRIPT" [ "$status" -eq 1 ] }