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-
Compila e analizza il codice Go:
Terminal window go build ./...go vet ./... -
Esegui i test Go:
Terminal window go test ./... -
Controlla e testa l’app web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
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-endI test end-to-end pilotano un vero browser contro un vero programma. Esegui il progetto per l’area che hai toccato:
npm --prefix app/frontend run e2e -- --project=moviesL’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.
Scelte
Link a ScelteQuali 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 funzionaSintomo. 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.
Per esperti
Link a Per espertiTag 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.
go test -count=1 -run '^TestFault|^TestCrashInEveryLoopIsContained$' ./app/backend/cmd/holyarrsHOLYARRS_RESTART_TIMING=1 go test -count=1 -run '^TestCrashRestartTime$' ./app/backend/cmd/holyarrsHOLYARRS_MEMORY=1 go test -count=1 -timeout 30m -run '^TestMemoryPartsRuns$' ./app/backend/cmd/holyarrsgo 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.
Correlati
Link a CorrelatiHolyArrs è gratis. Se ti ha fatto risparmiare tempo, metti una stella su GitHub, sostienilo o offrimi un caffè.