इसे छोड़कर कंटेंट पर जाएं

टेस्टिंग

सेटअप

बदलाव भेजने से पहले उसे अपनी मशीन पर जाँच लें।

शुरू करने से पहले

शुरू करने से पहले का लिंक
  • सेटअप पूरा करें। Go टेस्ट बिल्ड किया हुआ वेब ऐप दिखाते हैं, इसलिए पहले उसे बिल्ड करें।

  • टेस्ट ब्राउज़र एक बार इंस्टॉल करें:

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

रोज़ की जाँचें चलाएं

रोज़ की जाँचें चलाएं का लिंक
  1. Go कोड को बिल्ड और vet करें:

    Terminal window
    go build ./...
    go vet ./...
  2. Go टेस्ट चलाएं:

    Terminal window
    go test ./...
  3. वेब ऐप को जाँचें और टेस्ट करें:

    Terminal window
    npm --prefix app/frontend run check
    npm --prefix app/frontend run lint
    npm --prefix app/frontend run test
  4. लेयर और फ़ाइल-लेआउट के नियम चलाएं:

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

कोई फ़ेल नहीं दिखना चाहिए। CI यही कमांड चलाता है, Go वाली amd64 और arm64 पर, और साथ में एक रन race detector के साथ (go test -race ./...)।

एंड-टू-एंड टेस्ट चलाएं

एंड-टू-एंड टेस्ट चलाएं का लिंक

एंड-टू-एंड टेस्ट एक असली प्रोग्राम पर एक असली ब्राउज़र चलाते हैं। जिस हिस्से को आपने छुआ है, उसका प्रोजेक्ट चलाएं:

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

रन एक नए कॉन्फ़िग फ़ोल्डर पर अपना HolyArrs ख़ुद शुरू करता है। setup प्रोजेक्ट पहले ओनर बनाता है, और ज़्यादातर दूसरे प्रोजेक्ट उसका इंतज़ार करते हैं। नया वर्ज़न निकालने से पहले --project के बिना पूरा सेट चलाएं।

कौन से प्रोजेक्ट चलाएं

कौन से प्रोजेक्ट चलाएं का लिंक
आपने क्या बदला यह चलाएं
फ़िल्में movies
शो shows
रिक्वेस्ट requests, lists, reports
डाउनलोड sources, downloaders, downloads
साइन-इन और यूज़र accounts, kid
हेल्थ और शेड्यूल schedules, controls
पेज का लेआउट desktop, phone, a11y

प्रोजेक्ट के नाम app/frontend/playwright.config.ts में हैं। जो प्रोजेक्ट किसी दूसरे पर निर्भर है, वह पहले उसे चलाता है।

नया टेस्ट कहाँ जाता है

नया टेस्ट कहाँ जाता है का लिंक
किस्म कहाँ
Go जिस फ़ाइल को टेस्ट करता है, उसके बगल में
वेब यूनिट अपनी फ़ाइल के बगल में, name.test.ts के नाम से
एंड-टू-एंड app/tests/<module>/

किसी असली बाहरी सर्विस को कभी कॉल न करें। app/tests/fakes के नीचे उसकी एक नकल जोड़ें। जो टेस्ट सिर्फ़ आपकी मशीन पर पास होता है, वह टूटा हुआ है।

लक्षण। स्ट्रक्चर की कोई जाँच फ़ेल होती है। वजह। संदेश में फ़ाइल और उस नियम का नाम होता है जो आपने तोड़ा। हल। कोड को दूसरी जगह ले जाएं, या ऊपर वाले मॉड्यूल से सादा डेटा अंदर भेजें। मॉड्यूल देखें।

लक्षण। एंड-टू-एंड टेस्ट शुरू नहीं हो पाते। वजह। टेस्ट ब्राउज़र इंस्टॉल नहीं है। हल। ऊपर दी गई playwright install वाली लाइन चलाएं।

लक्षण। Go टेस्ट पेज न मिलने पर फ़ेल होते हैं। वजह। वेब ऐप बिल्ड नहीं हुआ है। हल। npm --prefix app/frontend run build चलाएं।

एक्सपर्ट के लिए

एक्सपर्ट के लिए का लिंक
बिल्ड टैग

टैग वाला टेस्ट सादे go test ./... में छूट जाता है। उसे चलाने के लिए -tags <tag> दें।

टैग इसमें क्या है
structure tools/structurecheck में लेयर, फ़ाइल-लेआउट, SQL की जगह और कमेंट के नियम
measure डाउनलोड के समय की जाँचें
lab टेस्ट लैब में असली ऐप पर चलने वाले टेस्ट। ये HOLYARRS_LAB_* पढ़ते हैं और वे सेट न हों तो छूट जाते हैं
labms, livesubs मीडिया सर्वर और लाइव सबटाइटल साइट के लैब रन
लंबे और फ़ॉल्ट वाले रन

CI इन्हें सादे टेस्ट के ऊपर से चलाता है। नया वर्ज़न निकालने से पहले इन्हें चलाएं।

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
वेरिएबल क्या करता है
HOLYARRS_FAULT_OUT वह फ़ाइल जिसमें फ़ॉल्ट वाले रन अपनी टेबल लिखते हैं
HOLYARRS_RESTART_TIMING, HOLYARRS_RESTART_TIMING_OUT क्रैश से साइन-इन तक के समय की माप चालू करते हैं और उसकी आउटपुट फ़ाइल का नाम देते हैं
HOLYARRS_MEMORY, HOLYARRS_MEMORY_OUT मेमोरी के रन चालू करते हैं और उनकी आउटपुट फ़ाइल का नाम देते हैं
HOLYARRS_CRASH_RUNS, HOLYARRS_CRASH_SEED app/backend/internal/mediafiles/dbtests (crash_test.go) के क्रैश लूप के राउंड और seed, जो -short में छूट जाता है
नकली सर्वर और वेरिएबल

एंड-टू-एंड टेस्ट डाउनलोडर, सोर्स और मेटाडेटा सर्वर के लिए नकली सर्वर शुरू करते हैं, इसलिए कोई टेस्ट किसी असली सर्विस तक नहीं पहुँचता। प्रोग्राम को उनकी तरफ़ मोड़ने के लिए टेस्ट HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL और HOLYARRS_QBITTORRENT_URL जैसे वेरिएबल सेट करते हैं। असली इंस्टॉल को इनकी कभी ज़रूरत नहीं पड़ती।

API कॉन्ट्रैक्ट के अपने टेस्ट हैं। जब openapi.json रूट से अलग हो जाती है तो TestOpenAPIGenerated फ़ेल होता है, और tools/structurecheck/testdata का रूट-टेबल स्नैपशॉट किसी भी जोड़े गए, हटाए गए या खिसकाए गए रूट पर फ़ेल होता है।

HolyArrs मुफ़्त है। अगर इससे आपका समय बचा, तो GitHub पर स्टार दें, स्पॉन्सर करें या मुझे एक कॉफ़ी पिलाएं।