Lewati ke konten

Pengujian

Penyiapan

Periksa perubahan kamu di komputer kamu sebelum dikirim.

  • Selesaikan Penyiapan. Tes Go melayani aplikasi web yang sudah dibangun, jadi bangun dulu.

  • Pasang browser untuk tes sekali saja:

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

Jalankan pemeriksaan harian

Tautan ke Jalankan pemeriksaan harian
  1. Bangun dan vet kode Go:

    Terminal window
    go build ./...
    go vet ./...
  2. Jalankan tes Go:

    Terminal window
    go test ./...
  3. Periksa dan uji aplikasi web:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. Jalankan aturan layer dan tata letak file:

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

Tidak boleh ada yang gagal. CI menjalankan perintah yang sama, yang untuk Go di amd64 dan arm64, ditambah satu run dengan race detector (go test -race ./...).

Jalankan tes end-to-end

Tautan ke Jalankan tes end-to-end

Tes end-to-end menggerakkan browser sungguhan terhadap program sungguhan. Jalankan project untuk area yang kamu sentuh:

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

Run ini memulai HolyArrs sendiri dengan folder konfigurasi baru. Project setup membuat pemilik lebih dulu, dan sebagian besar project lain menunggunya. Jalankan suite penuh tanpa --project sebelum sebuah versi dirilis.

Project mana yang dijalankan

Tautan ke Project mana yang dijalankan
Yang kamu ubah Jalankan
Film movies
Serial shows
Permintaan requests, lists, reports
Unduhan sources, downloaders, downloads
Login dan pengguna accounts, kid
Kondisi dan jadwal schedules, controls
Tata letak halaman desktop, phone, a11y

Project diberi nama di app/frontend/playwright.config.ts. Project yang bergantung pada project lain akan menjalankan yang itu dulu.

Di mana tes baru ditaruh

Tautan ke Di mana tes baru ditaruh
Jenis Tempat
Go Di samping file yang diuji
Unit web Di samping filenya, sebagai name.test.ts
End-to-end app/tests/<module>/

Jangan pernah memanggil layanan luar yang sungguhan. Tambahkan pengganti di app/tests/fakes. Tes yang hanya lolos di komputer kamu itu rusak.

Kalau tidak berhasil

Tautan ke Kalau tidak berhasil

Gejala. Sebuah pemeriksaan struktur gagal. Penyebab. Pesannya menyebut file dan aturan yang kamu langgar. Solusi. Pindahkan kodenya, atau kirim data biasa dari modul di atasnya. Lihat Modul.

Gejala. Tes end-to-end tidak bisa mulai. Penyebab. Browser untuk tes belum terpasang. Solusi. Jalankan baris playwright install di atas.

Gejala. Tes Go gagal karena halaman tidak ada. Penyebab. Aplikasi web belum dibangun. Solusi. Jalankan npm --prefix app/frontend run build.

Build tag

Tes yang punya tag dilewati di go test ./... biasa. Sertakan -tags <tag> untuk menjalankannya.

Tag Isinya
structure Aturan layer, tata letak file, penempatan SQL, dan komentar di tools/structurecheck
measure Pemeriksaan waktu unduhan
lab Tes terhadap aplikasi sungguhan di lab uji. Tes ini membaca HOLYARRS_LAB_* dan dilewati kalau belum diatur
labms, livesubs Run lab untuk server media dan situs subtitle langsung
Run panjang dan run fault

CI menjalankan ini di atas tes biasa. Jalankan sebelum sebuah versi dirilis.

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
Variabel Fungsinya
HOLYARRS_FAULT_OUT File tempat run fault menulis tabelnya
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT Mengaktifkan pengukuran waktu dari crash sampai login dan menamai file outputnya
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT Mengaktifkan run memori dan menamai file outputnya
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED Jumlah putaran dan seed untuk loop crash di app/backend/internal/mediafiles/dbtests (crash_test.go), yang dilewati dengan -short
Server pengganti dan variabel

Tes end-to-end memulai server pengganti untuk Downloader, Sumber, dan server metadata, jadi tidak ada tes yang menjangkau layanan sungguhan. Tes mengatur variabel seperti HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL, dan HOLYARRS_QBITTORRENT_URL untuk mengarahkan program ke server itu. Instalasi sungguhan tidak pernah membutuhkannya.

Kontrak API punya tesnya sendiri. TestOpenAPIGenerated gagal kalau openapi.json menyimpang dari route, dan snapshot tabel route di tools/structurecheck/testdata gagal kalau ada route yang ditambah, dihapus, atau dipindah.

HolyArrs gratis. Kalau ini menghemat waktumu, beri bintang di GitHub, jadi sponsor atau traktir saya kopi.