Edasi sisu juurde

Testimine

Seadistus

Kontrolli oma muudatust oma arvutis enne saatmist.

  • Lõpeta Seadistamine. Go testid teenindavad ehitatud veebirakendust, nii et ehita see esmalt.

  • Paigalda testbrauser üks kord:

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

Käivita igapäevased kontrollid

Link jaotisele Käivita igapäevased kontrollid
  1. Ehita ja kontrolli Go koodi:

    Terminal window
    go build ./...
    go vet ./...
  2. Käivita Go testid:

    Terminal window
    go test ./...
  3. Kontrolli ja testi veebirakendust:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Käivita kihtide ja failipaigutuse reeglid:

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

Ühtegi viga ei tohiks tulla. CI käivitab samu käske, Go omi platvormidel amd64 ja arm64, lisaks üks jooksutus võidujooksu detektoriga (go test -race ./...).

Otsast otsani testid juhivad päris brauserit päris programmi vastu. Käivita projekt piirkonna jaoks, mida puutusid:

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

Jooksutus käivitab oma HolyArrsi värskes seadete kaustas. Projekt setup teeb esmalt omaniku ja enamik teisi projekte ootab seda. Käivita enne versiooni täielik komplekt ilma --project’ita.

Muutsid Käivita
Filme movies
Sarju shows
Soove requests, lists, reports
Allalaadimisi sources, downloaders, downloads
Sisselogimist ja kasutajaid accounts, kid
Tervist ja ajakavasid schedules, controls
Lehe paigutust desktop, phone, a11y

Projektid on nimetatud failis app/frontend/playwright.config.ts. Projekt, mis sõltub teisest, käivitab selle esmalt.

Liik Kuhu
Go Testitava faili kõrvale
Veebi ühikutest Faili kõrvale, kujul name.test.ts
Otsast otsani app/tests/<module>/

Ära kunagi kutsu päris välisteenust. Lisa asendaja kausta app/tests/fakes. Test, mis läbib ainult sinu arvutis, on katki.

Sümptom. Struktuurikontroll ebaõnnestub. Põhjus. Teade nimetab faili ja reegli, mida rikkusid. Lahendus. Tõsta kood ära või anna lihtsad andmed kõrgemast moodulist alla. Vaata Moodulid.

Sümptom. Otsast otsani testid ei käivitu. Põhjus. Testbrauser ei ole paigaldatud. Lahendus. Käivita ülaltoodud playwright install rida.

Sümptom. Go testid ebaõnnestuvad puuduvate lehtede tõttu. Põhjus. Veebirakendus ei ole ehitatud. Lahendus. Käivita npm --prefix app/frontend run build.

Ehitussildid

Sildiga test jäetakse tavalises go test ./... vahele. Käivitamiseks anna -tags <tag>.

Silt Sisaldab
structure Kihtide, failipaigutuse, SQL asukoha ja kommentaaride reeglid kaustas tools/structurecheck
measure Allalaadimise ajastuse kontrollid
lab Testid päris rakenduste vastu katselaboris. Need loevad HOLYARRS_LAB_* ja jäetakse vahele, kui need pole seatud
labms, livesubs Laborijooksutused meediaserverite ja päris subtiitrisaitide jaoks
Pikad ja tõrkejooksutused

CI käivitab need tavatestide peale. Käivita need enne versiooni.

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
Muutuja Teeb
HOLYARRS_FAULT_OUT Fail, kuhu tõrkejooksutused oma tabeli kirjutavad
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Lülitavad sisse kokkujooksmisest sisselogimiseni ajastuse ja nimetavad selle väljundfaili
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Lülitavad sisse mälujooksutused ja nimetavad nende väljundfaili
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Voorud ja seeme kokkujooksmise tsükli jaoks kaustas app/backend/internal/mediafiles/dbtests (crash_test.go), mis jäetakse -short korral vahele
Asendusserverid ja muutujad

Otsast otsani testid käivitavad asendusservereid allalaadijate, allikate ja metaandmete serveri jaoks, nii et ükski test ei jõua päris teenuseni. Testid seavad muutujad, näiteks HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ja HOLYARRS_QBITTORRENT_URL, et suunata programm nende poole. Päris paigaldus ei vaja neid kunagi.

API lepingul on omad testid. TestOpenAPIGenerated ebaõnnestub, kui openapi.json marsruutidest lahku läheb, ja marsruutide tabeli hetktõmmis kaustas tools/structurecheck/testdata ebaõnnestub iga lisatud, eemaldatud või liigutatud marsruudi peale.

HolyArrs on tasuta. Kui see säästis sinu aega, anna talle GitHubis täht, toeta teda või osta mulle kohvi.