Siirry sisältöön

Testaus

Käyttöönotto

Tarkista muutoksesi omalla koneellasi ennen kuin lähetät sen.

  • Käy läpi Käyttöönotto. Go-testit tarjoavat rakennetun verkkosovelluksen, joten rakenna se ensin.

  • Asenna testiselain kerran:

    Terminal window
    npx --prefix app/frontend playwright install chromium
  1. Rakenna ja tarkista Go-koodi:

    Terminal window
    go build ./...
    go vet ./...
  2. Aja Go-testit:

    Terminal window
    go test ./...
  3. Tarkista ja testaa verkkosovellus:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Aja kerros- ja tiedostorakennesäännöt:

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

Virheitä ei pitäisi tulla. CI ajaa samat komennot, Go-komennot arkkitehtuureilla amd64 ja arm64, sekä yhden ajon race-tunnistimella (go test -race ./...).

End-to-end-testit ohjaavat oikeaa selainta oikeaa ohjelmaa vasten. Aja projekti alueelle, jota muutit:

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

Ajo käynnistää oman HolyArrsinsa tuoreella asetuskansiolla. Projekti setup tekee ensin omistajan, ja useimmat muut projektit odottavat sitä. Aja koko sarja ilman --project-lippua ennen versiota.

Muutit Aja
Elokuvat movies
Sarjat shows
Pyynnöt requests, lists, reports
Lataukset sources, downloaders, downloads
Kirjautuminen ja käyttäjät accounts, kid
Kunto ja aikataulut schedules, controls
Sivun asettelu desktop, phone, a11y

Projektit on nimetty tiedostossa app/frontend/playwright.config.ts. Projekti, joka riippuu toisesta, ajaa sen ensin.

Laji Minne
Go Testattavan tiedoston viereen
Web-yksikkötesti Tiedostonsa viereen nimellä name.test.ts
End-to-end app/tests/<module>/

Älä koskaan kutsu oikeaa ulkoista palvelua. Lisää sijaispalvelin kansioon app/tests/fakes. Testi, joka läpäisee vain sinun koneellasi, on rikki.

Oire. Rakennetarkistus epäonnistuu. Syy. Virheilmoitus nimeää tiedoston ja säännön, jonka rikoit. Ratkaisu. Siirrä koodi tai välitä tavallista dataa ylemmältä moduulilta. Katso Moduulit.

Oire. End-to-end-testit eivät käynnisty. Syy. Testiselainta ei ole asennettu. Ratkaisu. Suorita yllä oleva playwright install -rivi.

Oire. Go-testit epäonnistuvat, koska sivuja puuttuu. Syy. Verkkosovellusta ei ole rakennettu. Ratkaisu. Suorita npm --prefix app/frontend run build.

Build-tagit

Testi, jolla on tagi, ohitetaan tavallisessa go test ./... -ajossa. Aja se antamalla -tags <tag>.

Tagi Sisältö
structure Kerros-, tiedostorakenne-, SQL-sijainti- ja kommenttisäännöt kohdassa tools/structurecheck
measure Latausten ajoitustarkistukset
lab Testit oikeita sovelluksia vasten testilabrassa. Ne lukevat HOLYARRS_LAB_* ja ohittavat itsensä, jos niitä ei ole asetettu
labms, livesubs Labra-ajot mediapalvelimille ja live-tekstityssivustoille
Pitkät ajot ja vika-ajot

CI ajaa nämä tavallisten testien lisäksi. Aja ne ennen versiota.

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
Muuttuja Tehtävä
HOLYARRS_FAULT_OUT Tiedosto, johon vika-ajot kirjoittavat taulukkonsa
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Ottavat käyttöön kaatumisesta kirjautumiseen -ajoituksen ja nimeävät sen tulostetiedoston
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Ottavat käyttöön muistiajot ja nimeävät niiden tulostetiedoston
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Kierrokset ja siemen kaatumissilmukalle kohdassa app/backend/internal/mediafiles/dbtests (crash_test.go), joka ohitetaan komennolla -short
Sijaispalvelimet ja muuttujat

End-to-end-testit käynnistävät sijaispalvelimet latausohjelmille, lähteille ja metadatapalvelimelle, joten mikään testi ei tavoita oikeaa palvelua. Testit asettavat muuttujia, kuten HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ja HOLYARRS_QBITTORRENT_URL, ohjatakseen ohjelman niihin. Oikea asennus ei koskaan tarvitse niitä.

API-sopimuksella on omat testinsä. TestOpenAPIGenerated epäonnistuu, kun openapi.json eroaa reiteistä, ja reittitaulun tilannekuva kansiossa tools/structurecheck/testdata epäonnistuu jokaisesta lisätystä, poistetusta tai siirretystä reitistä.

HolyArrs on ilmainen. Jos se säästi aikaasi, anna sille tähti GitHubissa, tue sitä tai tarjoa minulle kahvit.