test: Profile-Logik und Installer-Test-Suite #3

Merged
dschlueter merged 1 commit from test/profile-and-installer into main 2026-06-28 04:07:09 +02:00
Owner

Fügt eine leichtgewichtige Test-Suite ohne externe Abhängigkeiten oder Netzwerk hinzu.

Ausführung

make test
# oder
bash tests/test_profiles.sh

Abdeckung (15 Tests, alle grün)

Profile-Logik – mit einem Stub-claude, der die exportierten ANTHROPIC_*-Vars einfängt:

  • pro-Profil bereinigt stale ANTHROPIC-Env und startet claude
  • glm/free-Profile exportieren BASE_URL/AUTH_TOKEN/MODEL korrekt
  • Fehlerpfade: fehlender OPENROUTER_API_KEY, unbekanntes Profil, ungültiger Mode → je exit 1

Installer-Symlink-Logik – isoliertes temporäres HOME + Throwaway-Klon:

  • S1 kaputter (dangling) Symlink → wird per ln -sfn umgehängt (vorher fatal)
  • S2 echtes Verzeichnis am Ziel → Warning, bleibt unangetastet (vorher stillschweigend)
  • S3 freier Pfad → neuer Symlink
  • S4 bestehender Symlink → wird umgehängt

Design

Alle Tests nutzen temporäre Verzeichnisse für HOME und einen Throwaway-Klon, sodass der echte Working Tree nie berührt wird. Kein Test-Framework nötig, nur bash + yq (ohne yq schlagen die Profile-Tests ohnehin fehl, was korrekt ist).

Direkt nach main merged, da es die vorherigen PRs (#1, #2) nicht berührt.

Fügt eine leichtgewichtige Test-Suite ohne externe Abhängigkeiten oder Netzwerk hinzu. ## Ausführung ```bash make test # oder bash tests/test_profiles.sh ``` ## Abdeckung (15 Tests, alle grün) **Profile-Logik** – mit einem Stub-`claude`, der die exportierten `ANTHROPIC_*`-Vars einfängt: - `pro`-Profil bereinigt stale ANTHROPIC-Env und startet claude - `glm`/`free`-Profile exportieren BASE_URL/AUTH_TOKEN/MODEL korrekt - Fehlerpfade: fehlender `OPENROUTER_API_KEY`, unbekanntes Profil, ungültiger Mode → je `exit 1` **Installer-Symlink-Logik** – isoliertes temporäres `HOME` + Throwaway-Klon: - S1 kaputter (dangling) Symlink → wird per `ln -sfn` umgehängt (vorher fatal) - S2 echtes Verzeichnis am Ziel → Warning, bleibt unangetastet (vorher stillschweigend) - S3 freier Pfad → neuer Symlink - S4 bestehender Symlink → wird umgehängt ## Design Alle Tests nutzen temporäre Verzeichnisse für `HOME` und einen Throwaway-Klon, sodass der echte Working Tree nie berührt wird. Kein Test-Framework nötig, nur `bash` + `yq` (ohne `yq` schlagen die Profile-Tests ohnehin fehl, was korrekt ist). Direkt nach `main` merged, da es die vorherigen PRs (#1, #2) nicht berührt.
bash tests/test_profiles.sh  (or: make test)

Covers the bug classes that surfaced during recent work, without any
external dependencies or network:

Profile logic (stub `claude` captures exported ANTHROPIC_* env):
- pro profile clears stale ANTHROPIC env and launches claude
- glm/free profiles export BASE_URL/AUTH_TOKEN/MODEL correctly
- error paths: missing OPENROUTER_API_KEY, unknown profile, bad mode
  each exit 1

Installer symlink logic (isolated temp HOME, throwaway clone):
- S1 broken/dangling symlink -> repointed via ln -sfn (was fatal before)
- S2 real directory at target -> warning, preserved (was silent)
- S3 free path -> new symlink created
- S4 existing symlink -> repointed

All tests use temp dirs for HOME and a throwaway repo clone, so the real
working tree is never touched.

Co-Authored-By: Claude <noreply@anthropic.com>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
dschlueter/claude-launcher-profiles!3
No description provided.