87 lines
3.1 KiB
Markdown
87 lines
3.1 KiB
Markdown
# agent.md — test-samurai
|
||
|
||
## Rolle & Arbeitsweise
|
||
- Rolle: **TDD-first Entwickler**
|
||
- Jede neue Funktion, jedes neue Kommando und jede Verhaltensänderung **muss durch Tests abgesichert sein**.
|
||
- Nach jeder Code-Änderung **Tests via `bash run_test.sh` ausführen** und bei Fehlern so lange korrigieren, bis alle Tests grün sind.
|
||
- Antworten immer auf Deutsch.
|
||
- **Nicht raten**:
|
||
- Bei unklaren oder mehrdeutigen Anforderungen **Arbeit stoppen** und Klarstellung verlangen.
|
||
- TODO/NOTE im Code ist zulässig, stilles Raten nicht.
|
||
- **Keine stillen Änderungen**:
|
||
- Bestehende Features dürfen nicht unbemerkt geändert oder ersetzt werden.
|
||
- Notwendige Anpassungen zur Koexistenz mehrerer Features müssen klar erkennbar sein.
|
||
- **Hilfe-Ansicht aktuell halten**:
|
||
- Änderungen und/oder Erweiterungen müssen **immer** die `:help`-Dokumentation, die README.md und die `quick-help`-Ansicht (via `?`) automatisch aktualisieren.
|
||
- Sprache der Hilfe ist wie die README.md immer **englisch**.
|
||
|
||
## Projektziel
|
||
- Neovim Plugin: **test-samurai**
|
||
- Sprache: **Lua**
|
||
- Zielplattform: **Neovim ≥ 0.11.4**
|
||
- Ziel:
|
||
- Tests aus verschiedenen Sprachen/Frameworks starten
|
||
- Einheitliche UX
|
||
- Erweiterbarkeit über Runner-Module
|
||
|
||
## Installation & Entwicklung
|
||
- Installation über **Lazy.nvim**
|
||
- Entwicklung muss über **lokalen Pfad** in Lazy möglich sein
|
||
- Runner-Konfiguration über `setup({ runner_modules = {...} })`
|
||
|
||
## Runner-Architektur
|
||
- Runner sind eigenständige Lua-Module
|
||
- Pflichtfunktionen:
|
||
- `is_test_file`
|
||
- `find_nearest`
|
||
- `build_command`
|
||
- Optionale Funktionen:
|
||
- `build_file_command`
|
||
- `build_all_command`
|
||
|
||
## Unterstützte Runner
|
||
### Go
|
||
- `_test.go`
|
||
- Subtests via `t.Run`
|
||
- `go test -v`
|
||
- Failed-only unterstützt
|
||
|
||
### JavaScript / TypeScript
|
||
- jest, mocha, vitest
|
||
- Auswahl via `package.json`
|
||
- Nearest: `it()` oder umschließendes `describe`
|
||
|
||
### Lua
|
||
- Eingeschränkt
|
||
- `TSamAll` / `TSamFile` ok
|
||
- `TSamNearest` instabil
|
||
|
||
## Commands & Keymaps
|
||
- `TSamNearest` → `<leader>tn`
|
||
- `TSamFile` → `<leader>tf`
|
||
- `TSamAll` → `<leader>ta`
|
||
- `TSamLast` → `<leader>tl`
|
||
- `TSamFailedOnly` → `<leader>te`
|
||
- `TSamShowOutput` → `<leader>to`
|
||
|
||
## Output
|
||
- Floating Window
|
||
- Live Output + Autoscroll
|
||
- `<esc><esc>` versteckt Window
|
||
- Reopen via `TSamShowOutput`
|
||
- Wording:
|
||
- `Testing-Float`: Container-Floating-Window für Testausgabe
|
||
- `Test-Listing-Float`: linkes Unterfenster im `Testing-Float`, zeigt die Ergebnisliste
|
||
- `Detail-Float`: rechtes Unterfenster im `Testing-Float`, zeigt Detail-Output zum selektierten Test
|
||
- Verhalten: Nach `TSamNearest/TSamFile/TSamAll/TSamFailedOnly/...` öffnet sich das `Testing-Float` im Listing‑Modus (nur `Test-Listing-Float` sichtbar)
|
||
- `<cr>` auf `[ FAIL ] ...` im `Test-Listing-Float` öffnet/aktualisiert das `Detail-Float` als 20/80‑VSplit (links 20 % Listing, rechts 80 % Detail)
|
||
- ANSI: Nur im `Detail-Float` ANSI-Codes in Highlights übersetzen; im `Test-Listing-Float` keine ANSI-Übersetzung
|
||
|
||
## Tests
|
||
- plenary.nvim / busted
|
||
- Mocks & Stubs erlaubt
|
||
- Neue Features benötigen Tests
|
||
|
||
## Einschränkungen
|
||
- Lua Nearest pausiert
|