# Pi Test Runner

Estensione Pi per lanciare i test del progetto direttamente dal comando `/test`,
in modo consapevole del repository: rileva il tipo di progetto e sceglie il
comando di test più adatto.

## Funzionalità

- **Comando `/test`** — lancia i test del progetto dalla directory corrente
- **Autocomplete contestuale** — `/te` + Tab completa in `/test` senza spazio
  extra; dentro `/test`, Tab propone le flag disponibili senza ripetere quelle
  già usate; fuori dal comando, l'autocomplete resta quello di Pi
- **Rilevamento automatico del progetto** — individua il tipo di progetto
  (attualmente Go) e pianifica il comando di test corretto
- **Notifica di sintesi** — al termine mostra un riepilogo del risultato
  (esito, comando eseguito)
- **Risultati analizzabili dal modello** — con `--comment` i risultati vengono
  inviati al modello per l'analisi

## Installazione

Da npm (consigliata):

```bash
pi install npm:pi-test-runner
```

Da locale (sviluppo):

```bash
pi install .   # dalla root di questo repo
```

Poi in una sessione Pi già aperta:

```text
/reload
```

## Uso

```text
/test                     # esegue i test del progetto (es. go test -race ./...)
/test --tags contract,e2e # esegue con i build tags Go
/test --info              # mostra l'output completo del comando
/test --comment           # invia i risultati al modello per l'analisi
```

Autocomplete:

- `/te` + Tab → `/test` (cursore subito dopo il comando, senza spazio)
- `/test` + Tab → suggerisce `--info`, `--tags`, `--comment`
- le flag già usate non vengono riproposte

## Come funziona

1. Rileva il tipo di progetto nella directory corrente (attualmente: Go)
2. Pianifica il comando di test (`go test -race ./...`, con `-tags=...` se richiesto)
3. Esegue il comando e riporta un riepilogo del risultato
4. Con `--info` mostra l'output completo; con `--comment` invia al modello
   comando eseguito, esito e output troncato (max 12.000 caratteri)

## Sviluppo

```bash
npm run typecheck   # type check TypeScript
npm run test:unit   # test unitari (vitest)
npm run test:watch  # test in watch mode
```

Struttura:

```text
pi-test-runner/
├── extensions/          # entry point dell'estensione
├── src/
│   ├── application/     # logica di dominio (pianificazione, parsing, analisi)
│   ├── adapters/        # integrazione con l'API di Pi (comando, autocomplete)
│   └── infrastructure/  # esecuzione comandi e API di sistema
└── package.json
```

## Release

Le release partono da GitHub: crea una release (tag `vX.Y.Z`) e il workflow
pubblica automaticamente il pacchetto su npm con Trusted Publishing (OIDC).

## Stato

Attualmente supporta i progetti Go; l'architettura è predisposta per estendere
il rilevamento ad altri linguaggi.
