Tesztelés
Beállítás
Küldés előtt ellenőrizd a változtatásodat a saját gépeden.
Mielőtt elkezdenéd
Hivatkozás ide: Mielőtt elkezdenéd-
Végezd el a Beállítás lépéseit. A Go tesztek a lefordított webes appot szolgálják ki, ezért előbb fordítsd le.
-
Telepítsd egyszer a tesztböngészőt:
Terminal window npx --prefix app/frontend playwright install chromium
A mindennapi ellenőrzések futtatása
Hivatkozás ide: A mindennapi ellenőrzések futtatása-
Fordítsd le és vizsgáld meg a Go kódot:
Terminal window go build ./...go vet ./... -
Futtasd a Go teszteket:
Terminal window go test ./... -
Ellenőrizd és teszteld a webes appot:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Futtasd a rétegekre és a fájlelrendezésre vonatkozó szabályokat:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Hibát nem szabad látnod. A CI ugyanezeket a parancsokat futtatja, a Go-sakat amd64-en és arm64-en, plusz egy futtatást a race detectorral (go test -race ./...).
Az end-to-end tesztek futtatása
Hivatkozás ide: Az end-to-end tesztek futtatásaAz end-to-end tesztek valódi böngészőt vezérelnek egy valódi program ellen. Futtasd a projektet arra a területre, amelyhez nyúltál:
npm --prefix app/frontend run e2e -- --project=moviesA futtatás elindítja a saját HolyArrs-át egy friss konfigurációs mappán. A setup projekt hozza létre először a tulajdonost, és a legtöbb másik projekt megvárja. Kiadás előtt futtasd a teljes csomagot --project nélkül.
Lehetőségek
Hivatkozás ide: LehetőségekMely projekteket futtasd
Hivatkozás ide: Mely projekteket futtasd| Ezt módosítottad | Futtasd |
|---|---|
| Filmek | movies |
| Sorozatok | shows |
| Kérések | requests, lists, reports |
| Letöltések | sources, downloaders, downloads |
| Bejelentkezés és felhasználók | accounts, kid |
| Működési állapot és ütemezések | schedules, controls |
| Oldalelrendezés | desktop, phone, a11y |
A projektek neve az app/frontend/playwright.config.ts fájlban van. Az a projekt, amely másiktól függ, azt előbb lefuttatja.
Hová kerül egy új teszt
Hivatkozás ide: Hová kerül egy új teszt| Fajta | Hová |
|---|---|
| Go | A tesztelt fájl mellé |
| Webes unit | A fájlja mellé, name.test.ts néven |
| End-to-end | app/tests/<module>/ |
Soha ne hívj valódi külső szolgáltatást. Adj hozzá egy helyettesítőt az app/tests/fakes alá. Az a teszt, amely csak a te gépeden megy át, hibás.
Ha nem működik
Hivatkozás ide: Ha nem működikTünet. Egy szerkezeti ellenőrzés elbukik. Ok. Az üzenet megnevezi a fájlt és a megszegett szabályt. Megoldás. Told át a kódot, vagy a magasabb modulból adj át sima adatot. Lásd: Modulok.
Tünet. Az end-to-end tesztek nem tudnak elindulni.
Ok. A tesztböngésző nincs telepítve.
Megoldás. Futtasd a fenti playwright install sort.
Tünet. A Go tesztek hibáznak a hiányzó oldalak miatt.
Ok. A webes app nincs lefordítva.
Megoldás. Futtasd: npm --prefix app/frontend run build.
Haladóknak
Hivatkozás ide: HaladóknakBuild tagek
A taggel ellátott teszt kimarad egy sima go test ./... futtatásból. A futtatásához add meg a -tags <tag> kapcsolót.
| Tag | Tartalma |
|---|---|
structure |
A réteg-, fájlelrendezés-, SQL-hely- és komment-szabályok a tools/structurecheck-ben |
measure |
Letöltési időzítés-ellenőrzések |
lab |
Valódi appok elleni tesztek egy tesztlaborban. A HOLYARRS_LAB_* változókat olvassák, és kimaradnak, ha azok nincsenek beállítva |
labms, livesubs |
Labor-futtatások médiaszerverekhez és élő feliratoldalakhoz |
Hosszú és hibafuttatások
Ezeket a CI a sima tesztek mellett futtatja. Kiadás előtt futtasd őket.
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| Változó | Feladata |
|---|---|
HOLYARRS_FAULT_OUT |
A fájl, amelybe a hibafuttatások a táblájukat írják |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Bekapcsolják az összeomlástól a bejelentkezésig tartó időmérést, és megnevezik a kimeneti fájlját |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Bekapcsolják a memóriafuttatásokat, és megnevezik a kimeneti fájljukat |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
A körök száma és a seed az összeomlási ciklushoz az app/backend/internal/mediafiles/dbtests mappában (crash_test.go), amely -short mellett kimarad |
Helyettesítő szerverek és változók
Az end-to-end tesztek helyettesítő szervereket indítanak a Letöltőknek, a Forrásoknak és a metaadat-szervernek, így egyetlen teszt sem ér el valódi szolgáltatást. A tesztek olyan változókat állítanak be, mint a HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL és HOLYARRS_QBITTORRENT_URL, hogy a programot ezekre irányítsák. Egy valódi telepítésnek soha nincs rájuk szüksége.
Az API-szerződésnek saját tesztjei vannak. A TestOpenAPIGenerated elbukik, ha az openapi.json eltér a route-októl, a tools/structurecheck/testdata mappában lévő route-tábla pillanatkép pedig minden hozzáadott, eltávolított vagy áthelyezett route-on elbukik.
Kapcsolódó oldalak
Hivatkozás ide: Kapcsolódó oldalakA HolyArrs ingyenes. Ha időt spórolt neked, adj neki egy csillagot a GitHubon, támogasd vagy hívj meg egy kávéra.