Salta ai contenuti

Test

Configurazione

Controlla la tua modifica sul tuo computer prima di inviarla.

Prima di iniziare

Link a Prima di iniziare
  • Completa la Configurazione. I test Go servono l’app web compilata, quindi compilala prima.

  • Installa una volta sola il browser di test:

    Terminal window
    npx --prefix app/frontend playwright install chromium

Esegui i controlli di tutti i giorni

Link a Esegui i controlli di tutti i giorni
  1. Compila e analizza il codice Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Esegui i test Go:

    Terminal window
    go test ./...
  3. Controlla e testa l’app web:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Esegui le regole sui livelli e sulla struttura dei file:

    Terminal window
    go test -tags structure ./app/backend/tools/structurecheck

Non dovresti vedere nessun errore. CI esegue gli stessi comandi, quelli Go su amd64 e arm64, più un’esecuzione con il rilevatore di race (go test -race ./...).

Esegui i test end-to-end

Link a Esegui i test end-to-end

I test end-to-end pilotano un vero browser contro un vero programma. Esegui il progetto per l’area che hai toccato:

Terminal window
npm --prefix app/frontend run e2e -- --project=movies

L’esecuzione avvia un suo HolyArrs su una cartella di configurazione nuova. Il progetto setup crea prima il proprietario, e la maggior parte degli altri progetti lo aspetta. Prima di una versione, esegui la suite completa senza --project.

Quali progetti eseguire

Link a Quali progetti eseguire
Hai cambiato Esegui
Film movies
Serie shows
Richieste requests, lists, reports
Download sources, downloaders, downloads
Accesso e utenti accounts, kid
Salute e pianificazioni schedules, controls
Layout delle pagine desktop, phone, a11y

I nomi dei progetti sono in app/frontend/playwright.config.ts. Un progetto che dipende da un altro esegue prima quello.

Dove va un nuovo test

Link a Dove va un nuovo test
Tipo Dove
Go Accanto al file che testa
Unit test web Accanto al suo file, come name.test.ts
End-to-end app/tests/<module>/

Non chiamare mai un vero servizio esterno. Aggiungi un sostituto in app/tests/fakes. Un test che passa solo sul tuo computer è rotto.

Se non funziona

Link a Se non funziona

Sintomo. Un controllo sulla struttura fallisce. Causa. Il messaggio indica il file e la regola che hai infranto. Soluzione. Sposta il codice, oppure passa dati semplici dal modulo superiore. Vedi Moduli.

Sintomo. I test end-to-end non partono. Causa. Il browser di test non è installato. Soluzione. Esegui la riga playwright install qui sopra.

Sintomo. I test Go falliscono per pagine mancanti. Causa. L’app web non è compilata. Soluzione. Esegui npm --prefix app/frontend run build.

Tag di build

Un test con un tag viene saltato in un semplice go test ./.... Passa -tags <tag> per eseguirlo.

Tag Contiene
structure Le regole su livelli, struttura dei file, posizione dell’SQL e commenti in tools/structurecheck
measure Controlli sui tempi dei download
lab Test contro app reali in un laboratorio di prova. Leggono HOLYARRS_LAB_* e vengono saltati quando non sono impostate
labms, livesubs Esecuzioni in laboratorio per i server multimediali e per i siti di sottotitoli reali
Prove lunghe e sui guasti

CI le esegue in aggiunta ai test normali. Eseguile prima di una versione.

Terminal window
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrs
HOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrs
HOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrs
go test -count=1 -run '^TestDownloaderConformance$' ./app/backend/internal/downloads
Variabile Fa
HOLYARRS_FAULT_OUT Il file in cui le prove sui guasti scrivono la loro tabella
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Attivano la misura del tempo tra il crash e l’accesso e indicano il file di output
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Attivano le prove sulla memoria e indicano il loro file di output
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Numero di giri e seed per il ciclo dei crash in app/backend/internal/mediafiles/dbtests (crash_test.go), che viene saltato con -short
Server sostituti e variabili

I test end-to-end avviano server sostituti per i downloader, le Fonti e il server di metadati, così nessun test raggiunge un servizio reale. I test impostano variabili come HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL e HOLYARRS_QBITTORRENT_URL per puntare il programma verso di loro. Un’installazione reale non ne ha mai bisogno.

Il contratto dell’API ha i suoi test. TestOpenAPIGenerated fallisce quando openapi.json si scosta dalle route, e lo snapshot della tabella delle route in tools/structurecheck/testdata fallisce per ogni route aggiunta, rimossa o spostata.

HolyArrs è gratis. Se ti ha fatto risparmiare tempo, metti una stella su GitHub, sostienilo o offrimi un caffè.