Files
Logseq-Installer/test
2026-07-06 21:09:30 +02:00
..
2026-07-06 21:09:30 +02:00
2026-07-06 21:09:30 +02:00
2026-07-06 21:09:30 +02:00
2026-07-06 21:09:30 +02:00

Logseq-Installer Tests

Tests für logseq-install.sh basierend auf Bats (Bash Automated Testing System).

Schnellstart

./run-tests.sh

Voraussetzungen

  • bats muss installiert sein:

    # Debian/Ubuntu
    sudo apt-get install bats
    
    # Fedora
    sudo dnf install bats
    
    # macOS
    brew install bats-core
    

Verzeichnisstruktur

Logseq-Installer/
├── logseq-install.sh          # Hauptskript (bleibt unverändert)
├── run-tests.sh               # Test-Runner
└── test/
    ├── logseq-installer.bats  # Bats-Testdatei (21 Testfälle)
    ├── mocks/                 # Mock-Skripte für externe Befehle
    │   ├── wget               #   simuliert GitHub API & Downloads
    │   ├── pgrep              #   steuert Prozess-Erkennung
    │   ├── find               #   steuert Versions-Erkennung & Cleanup
    │   └── update-desktop-database  #   no-op Mock
    └── fixtures/              # Testdaten & Mock-States
        ├── wget_state         #   konfiguriert wget-Mock
        ├── pgrep_state        #   konfiguriert pgrep-Mock
        ├── find_state         #   konfiguriert find-Mock
        └── Logseq-linux-x64-*.AppImage  # Dummy-AppImages

Test-Abdeckung

# Test Beschreibung
1-5 Argument-Parsing -h, --hilfe, unbekannte Optionen, -r
6 Deinstallation --entfernen entfernt alle Dateien
7-9 Versionserkennung GitHub-Version, installierte Version, nicht installiert
10 Neuinstallation Download, Symlink, Desktop-Datei
11 Update Alte Version wird durch neue ersetzt
12 Kein Update Bereits aktuelle Version
13 Prozess-Check Abbruch wenn Logseq läuft
14 Download-Fehler Fehlerbehandlung bei fehlgeschlagenem Download
15-16 Desktop-Datei Erstellung & Icon-Download
17 Root-Check Prüfung der Root-Logik
18 Cleanup Mehrere alte Versionen werden entfernt
19-21 Code-Qualität Farbcodes, ERR-Trap, require_command

Wie Mocks funktionieren

Die Tests setzen PATH so, dass die Mocks vor den echten Befehlen gefunden werden:

export PATH="${TEST_DIR}/mocks:${PATH}"

Jeder Mock liest seine Konfiguration aus einer State-Datei in fixtures/. Die Tests können diese States über Hilfsfunktionen setzen:

set_wget_latest_version "0.10.16"    # Neueste Version simulieren
set_find_installed_version "0.10.14" # Installierte Version simulieren
set_pgrep_running 1                   # Prozess läuft (1) oder nicht (0)

Neuen Test hinzufügen

In test/logseq-installer.bats:

@test "mein neuer Test" {
    # Mock-States setzen
    set_wget_latest_version "0.10.16"
    set_find_installed_version ""
    set_pgrep_running 0

    # Skript aufrufen
    run run_installer

    # Assertions
    [ "$status" -eq 0 ]
    [[ "$output" == *"erfolgreich"* ]]
}