Testing
Setup
Suriin ang pagbabago mo sa sarili mong computer bago mo ito ipadala.
Bago ka magsimula
Link papunta sa Bago ka magsimula-
Tapusin ang Setup. Nagseserbisyo ang mga Go test ng naka-build na web app, kaya i-build muna ito.
-
I-install nang isang beses ang test browser:
Terminal window npx --prefix app/frontend playwright install chromium
Patakbuhin ang mga pang-araw-araw na check
Link papunta sa Patakbuhin ang mga pang-araw-araw na check-
I-build at i-vet ang Go code:
Terminal window go build ./...go vet ./... -
Patakbuhin ang mga Go test:
Terminal window go test ./... -
Suriin at i-test ang web app:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Patakbuhin ang mga patakaran sa layer at layout ng file:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Dapat wala kang makitang pagkabigo. Pareho ang mga command na pinapatakbo ng CI, ang mga Go ay sa amd64 at arm64, dagdag ang isang takbo na may race detector (go test -race ./...).
Patakbuhin ang mga end-to-end test
Link papunta sa Patakbuhin ang mga end-to-end testAng mga end-to-end test ay nagpapatakbo ng totoong browser laban sa totoong program. Patakbuhin ang project para sa bahaging ginalaw mo:
npm --prefix app/frontend run e2e -- --project=moviesSinisimulan ng takbo ang sarili nitong HolyArrs sa bagong config folder. Ang setup project ang unang gumagawa ng May-ari, at karamihan ng ibang project ay naghihintay rito. Patakbuhin ang buong suite nang walang --project bago ang isang release.
Mga pagpipilian
Link papunta sa Mga pagpipilianAling mga project ang patatakbuhin
Link papunta sa Aling mga project ang patatakbuhin| Binago mo | Patakbuhin |
|---|---|
| Movies | movies |
| Shows | shows |
| Requests | requests, lists, reports |
| Downloads | sources, downloaders, downloads |
| Sign-in at mga user | accounts, kid |
| Kalusugan at mga iskedyul | schedules, controls |
| Layout ng page | desktop, phone, a11y |
Ang mga project ay pinangalanan sa app/frontend/playwright.config.ts. Ang project na umaasa sa iba ay pinapatakbo muna ang isa.
Saan napupunta ang bagong test
Link papunta sa Saan napupunta ang bagong test| Uri | Saan |
|---|---|
| Go | Katabi ng file na sinusubok nito |
| Web unit | Katabi ng file nito, bilang name.test.ts |
| End-to-end | app/tests/<module>/ |
Huwag kailanman tumawag sa totoong serbisyo sa labas. Magdagdag ng pamalit sa ilalim ng app/tests/fakes. Sirang test ang pumapasa lang sa computer mo.
Kung hindi gumana
Link papunta sa Kung hindi gumanaSintomas. Bumagsak ang isang structure check. Dahilan. Pinangangalanan ng mensahe ang file at ang patakarang nasira mo. Solusyon. Ilipat ang code, o magpasa ng simpleng data mula sa mas mataas na module. Tingnan ang Modules.
Sintomas. Hindi makapagsimula ang mga end-to-end test.
Dahilan. Hindi naka-install ang test browser.
Solusyon. Patakbuhin ang linya ng playwright install sa itaas.
Sintomas. Bumabagsak ang mga Go test dahil kulang ang mga page.
Dahilan. Hindi naka-build ang web app.
Solusyon. Patakbuhin ang npm --prefix app/frontend run build.
Para sa mga eksperto
Link papunta sa Para sa mga ekspertoMga build tag
Ang test na may tag ay nilalaktawan sa simpleng go test ./.... Magpasa ng -tags <tag> para patakbuhin ito.
| Tag | Laman |
|---|---|
structure |
Mga patakaran sa layer, layout ng file, lugar ng SQL at comment sa tools/structurecheck |
measure |
Mga check ng oras ng download |
lab |
Mga test laban sa totoong app sa isang test lab. Binabasa nila ang HOLYARRS_LAB_* at nilalaktawan kapag hindi ito naka-set |
labms, livesubs |
Mga takbo sa lab para sa media server at live na site ng subtitle |
Mahahaba at fault na takbo
Pinapatakbo ito ng CI bukod sa mga simpleng test. Patakbuhin ang mga ito bago ang isang release.
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| Variable | Ginagawa |
|---|---|
HOLYARRS_FAULT_OUT |
File na pinagsusulatan ng mga fault run ng table nila |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
I-on ang pagsukat ng oras mula crash hanggang sign-in at pangalanan ang output file nito |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
I-on ang mga memory run at pangalanan ang output file nila |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
Bilang ng round at seed para sa crash loop sa app/backend/internal/mediafiles/dbtests (crash_test.go), na nilalaktawan sa ilalim ng -short |
Mga pamalit na server at variable
Ang mga end-to-end test ay nagsisimula ng mga pamalit na server para sa mga downloader, Pinagkukunan at metadata server, kaya walang test na umaabot sa totoong serbisyo. Itinatakda ng mga test ang mga variable tulad ng HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL at HOLYARRS_QBITTORRENT_URL para ituro ang program sa mga iyon. Hindi kailanman kailangan ng totoong install ang mga ito.
May sarili ring mga test ang API contract. Bumabagsak ang TestOpenAPIGenerated kapag lumihis ang openapi.json sa mga route, at bumabagsak ang snapshot ng route table sa tools/structurecheck/testdata sa anumang idinagdag, inalis o inilipat na route.
Kaugnay
Link papunta sa KaugnayLibre ang HolyArrs. Kung nakatipid ito ng oras mo, bigyan ito ng star sa GitHub, i-sponsor ito o ibili ako ng kape.