Pengujian
Penyiapan
Periksa perubahan kamu di komputer kamu sebelum dikirim.
Sebelum mulai
Tautan ke Sebelum mulai-
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-
Bangun dan vet kode Go:
Terminal window go build ./...go vet ./... -
Jalankan tes Go:
Terminal window go test ./... -
Periksa dan uji aplikasi web:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
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-endTes end-to-end menggerakkan browser sungguhan terhadap program sungguhan. Jalankan project untuk area yang kamu sentuh:
npm --prefix app/frontend run e2e -- --project=moviesRun 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.
Pilihan
Tautan ke PilihanProject 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 berhasilGejala. 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.
Untuk yang mahir
Tautan ke Untuk yang mahirBuild 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.
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| 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.
Terkait
Tautan ke TerkaitHolyArrs gratis. Kalau ini menghemat waktumu, beri bintang di GitHub, jadi sponsor atau traktir saya kopi.