Test
Kurulum
Göndermeden önce değişikliğini kendi bilgisayarında denetle.
Başlamadan önce
Başlamadan önce bağlantısı-
Kurulum sayfasını bitir. Go testleri derlenmiş web uygulamasını sunar, bu yüzden önce onu derle.
-
Test tarayıcısını bir kez kur:
Terminal window npx --prefix app/frontend playwright install chromium
Günlük denetimleri çalıştır
Günlük denetimleri çalıştır bağlantısı-
Go kodunu derle ve vet’ten geçir:
Terminal window go build ./...go vet ./... -
Go testlerini çalıştır:
Terminal window go test ./... -
Web uygulamasını denetle ve test et:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
Katman ve dosya düzeni kurallarını çalıştır:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
Hiç hata görmemelisin. CI aynı komutları çalıştırır, Go olanları amd64 ve arm64 üzerinde, ayrıca bir de race detector ile (go test -race ./...).
Uçtan uca testleri çalıştır
Uçtan uca testleri çalıştır bağlantısıUçtan uca testler gerçek bir tarayıcıyı gerçek bir programa karşı sürer. Dokunduğun alanın projesini çalıştır:
npm --prefix app/frontend run e2e -- --project=moviesÇalıştırma kendi HolyArrs’ını temiz bir yapılandırma klasöründe başlatır. Önce setup projesi sahibi oluşturur ve diğer projelerin çoğu onu bekler. Bir sürümden önce --project vermeden tam seti çalıştır.
Seçenekler
Seçenekler bağlantısıHangi projeler çalıştırılır
Hangi projeler çalıştırılır bağlantısı| Değiştirdiğin | Çalıştır |
|---|---|
| Filmler | movies |
| Diziler | shows |
| İstekler | requests, lists, reports |
| İndirmeler | sources, downloaders, downloads |
| Giriş ve kullanıcılar | accounts, kid |
| Sağlık ve zamanlamalar | schedules, controls |
| Sayfa düzeni | desktop, phone, a11y |
Projelerin adları app/frontend/playwright.config.ts içinde. Başka bir projeye bağlı olan proje, önce onu çalıştırır.
Yeni bir test nereye gider
Yeni bir test nereye gider bağlantısı| Tür | Nerede |
|---|---|
| Go | Test ettiği dosyanın yanında |
| Web birim testi | Dosyasının yanında, name.test.ts olarak |
| Uçtan uca | app/tests/<module>/ |
Gerçek bir dış servisi asla çağırma. app/tests/fakes altına bir taklit ekle. Yalnızca senin bilgisayarında geçen bir test bozuktur.
Çalışmazsa
Çalışmazsa bağlantısıBelirti. Bir yapı denetimi başarısız oluyor. Neden. Mesaj dosyayı ve bozduğun kuralı söyler. Çözüm. Kodu taşı ya da üstteki modülden düz veri geçir. Bkz. Modüller.
Belirti. Uçtan uca testler başlamıyor.
Neden. Test tarayıcısı kurulu değil.
Çözüm. Yukarıdaki playwright install satırını çalıştır.
Belirti. Go testleri eksik sayfalar yüzünden başarısız oluyor.
Neden. Web uygulaması derlenmedi.
Çözüm. npm --prefix app/frontend run build komutunu çalıştır.
Uzmanlar için
Uzmanlar için bağlantısıBuild etiketleri
Etiketli bir test, düz go test ./... içinde atlanır. Çalıştırmak için -tags <tag> ver.
| Etiket | İçeriği |
|---|---|
structure |
tools/structurecheck içindeki katman, dosya düzeni, SQL yerleşimi ve yorum kuralları |
measure |
İndirme süresi denetimleri |
lab |
Bir test labındaki gerçek uygulamalara karşı testler. HOLYARRS_LAB_* değişkenlerini okurlar ve bunlar ayarlı değilse atlanırlar |
labms, livesubs |
Medya sunucuları ve canlı altyazı siteleri için lab çalıştırmaları |
Uzun ve fault çalıştırmaları
CI bunları düz testlerin üstüne çalıştırır. Bir sürümden önce sen de çalıştır.
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| Değişken | Ne yapar |
|---|---|
HOLYARRS_FAULT_OUT |
Fault çalıştırmalarının tablosunu yazdığı dosya |
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT |
Çökmeden girişe kadar süre ölçümünü açar ve çıktı dosyasını adlandırır |
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT |
Bellek çalıştırmalarını açar ve çıktı dosyasını adlandırır |
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED |
app/backend/internal/mediafiles/dbtests içindeki çökme döngüsünün (crash_test.go) tur sayısı ve seed’i. -short ile atlanır |
Taklit sunucular ve değişkenler
Uçtan uca testler indiriciler, Kaynaklar ve metadata sunucusu için taklit sunucular başlatır, yani hiçbir test gerçek bir servise ulaşmaz. Testler, programı bunlara yöneltmek için HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ve HOLYARRS_QBITTORRENT_URL gibi değişkenler ayarlar. Gerçek bir kurulumun bunlara hiç ihtiyacı olmaz.
API sözleşmesinin kendi testleri var. openapi.json rotalardan saparsa TestOpenAPIGenerated başarısız olur, tools/structurecheck/testdata içindeki rota tablosu anlık görüntüsü ise eklenen, kaldırılan ya da taşınan her rotada başarısız olur.
İlgili
İlgili bağlantısıHolyArrs ücretsiz. Zamanından tasarruf ettirdiyse GitHub'da yıldızla, sponsor ol ya da bana bir kahve ısmarla.