Tovább a tartalomhoz

Tesztelés

Beállítás

Küldés előtt ellenőrizd a változtatásodat a saját gépeden.

  • 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
  1. Fordítsd le és vizsgáld meg a Go kódot:

    Terminal window
    go build ./...
    go vet ./...
  2. Futtasd a Go teszteket:

    Terminal window
    go test ./...
  3. Ellenőrizd és teszteld a webes appot:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. 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 valódi böngészőt vezérelnek egy valódi program ellen. Futtasd a projektet arra a területre, amelyhez nyúltál:

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

A 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.

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.

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.

Tü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.

Build 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.

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
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.

A HolyArrs ingyenes. Ha időt spórolt neked, adj neki egy csillagot a GitHubon, támogasd vagy hívj meg egy kávéra.