Testare
Configurare
Verifică-ți schimbarea pe aparatul tău înainte s-o trimiți.
Înainte să începi
Link către Înainte să începi-
Termină Configurare. Testele Go servesc aplicația web construită, așa că construiește-o mai întâi.
-
Instalează o dată browserul de test:
Terminal window npx --prefix app/frontend playwright install chromium
Rulează verificările de zi cu zi
Link către Rulează verificările de zi cu zi-
Construiește și verifică codul Go:
Terminal window go build ./...go vet ./... -
Rulează testele Go:
Terminal window go test ./... -
Verifică și testează aplicația web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Rulează regulile de straturi și de așezare a fișierelor:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Ar trebui să nu vezi nicio eroare. CI rulează aceleași comenzi, cele Go pe amd64 și arm64, plus o rulare cu detectorul de race (go test -race ./...).
Rulează testele end-to-end
Link către Rulează testele end-to-endTestele end-to-end conduc un browser real pe un program real. Rulează proiectul pentru zona pe care ai atins-o:
npm --prefix app/frontend run e2e -- --project=moviesRularea își pornește propriul HolyArrs pe un dosar de configurare nou. Proiectul setup creează mai întâi proprietarul, iar majoritatea celorlalte proiecte îl așteaptă. Rulează suita completă, fără --project, înainte de o versiune.
Alegeri
Link către AlegeriCe proiecte să rulezi
Link către Ce proiecte să rulezi| Ai schimbat | Rulează |
|---|---|
| Filme | movies |
| Seriale | shows |
| Cereri | requests, lists, reports |
| Descărcări | sources, downloaders, downloads |
| Conectare și utilizatori | accounts, kid |
| Sănătate și programe | schedules, controls |
| Aspectul paginilor | desktop, phone, a11y |
Proiectele sunt numite în app/frontend/playwright.config.ts. Un proiect care depinde de altul îl rulează pe acela primul.
Unde merge un test nou
Link către Unde merge un test nou| Fel | Unde |
|---|---|
| Go | Lângă fișierul pe care îl testează |
| Unitar web | Lângă fișierul lui, ca name.test.ts |
| End-to-end | app/tests/<module>/ |
Nu apela niciodată un serviciu extern real. Adaugă un înlocuitor în app/tests/fakes. Un test care trece doar pe aparatul tău e stricat.
Dacă nu merge
Link către Dacă nu mergeSimptom. O verificare de structură eșuează. Cauză. Mesajul numește fișierul și regula pe care ai încălcat-o. Soluție. Mută codul sau trimite date simple din modulul de sus. Vezi Module.
Simptom. Testele end-to-end nu pornesc.
Cauză. Browserul de test nu e instalat.
Soluție. Rulează linia playwright install de mai sus.
Simptom. Testele Go eșuează din cauza paginilor lipsă.
Cauză. Aplicația web nu e construită.
Soluție. Rulează npm --prefix app/frontend run build.
Pentru experți
Link către Pentru experțiEtichete de build
Un test cu etichetă e sărit într-un go test ./... simplu. Dă -tags <tag> ca să-l rulezi.
| Etichetă | Conține |
|---|---|
structure |
Regulile de straturi, așezare a fișierelor, loc al SQL-ului și comentarii din tools/structurecheck |
measure |
Verificări de timp pentru descărcări |
lab |
Teste pe aplicații reale într-un laborator de test. Citesc HOLYARRS_LAB_* și sunt sărite când acestea nu sunt setate |
labms, livesubs |
Rulări de laborator pentru servere media și site-uri de subtitrări live |
Rulări lungi și pentru defecte
CI le rulează în plus față de testele simple. Rulează-le înainte de o versiune.
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| Variabilă | Face |
|---|---|
HOLYARRS_FAULT_OUT |
Fișierul în care scriu rulările pentru defecte tabelul lor |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Pornesc măsurarea timpului de la oprire forțată până la conectare și numesc fișierul de ieșire |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Pornesc rulările de memorie și numesc fișierul de ieșire |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Runde și sămânță pentru bucla de opriri forțate din app/backend/internal/mediafiles/dbtests (crash_test.go), care se sare sub -short |
Servere înlocuitoare și variabile
Testele end-to-end pornesc servere înlocuitoare pentru programe de descărcare, Surse și serverul de metadate, așa că niciun test nu ajunge la un serviciu real. Testele setează variabile precum HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL și HOLYARRS_QBITTORRENT_URL ca să îndrepte programul spre ele. O instalare reală nu are nevoie niciodată de ele.
Contractul API are propriile teste. TestOpenAPIGenerated eșuează când openapi.json se abate de la rute, iar instantaneul tabelului de rute din tools/structurecheck/testdata eșuează la orice rută adăugată, scoasă sau mutată.
Vezi și
Link către Vezi șiHolyArrs este gratuit. Dacă ți-a economisit timp, dă-i o stea pe GitHub, sponsorizează-l sau cumpără-mi o cafea.