İçeriğe geç

Test

Kurulum

Göndermeden önce değişikliğini kendi bilgisayarında denetle.

  • 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ı
  1. Go kodunu derle ve vet’ten geçir:

    Terminal window
    go build ./...
    go vet ./...
  2. Go testlerini çalıştır:

    Terminal window
    go test ./...
  3. Web uygulamasını denetle ve test et:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. 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:

Terminal window
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.

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.

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.

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.

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.

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
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.

HolyArrs ücretsiz. Zamanından tasarruf ettirdiyse GitHub'da yıldızla, sponsor ol ya da bana bir kahve ısmarla.