टेस्टिंग
सेटअप
बदलाव भेजने से पहले उसे अपनी मशीन पर जाँच लें।
शुरू करने से पहले
शुरू करने से पहले का लिंक-
सेटअप पूरा करें। Go टेस्ट बिल्ड किया हुआ वेब ऐप दिखाते हैं, इसलिए पहले उसे बिल्ड करें।
-
टेस्ट ब्राउज़र एक बार इंस्टॉल करें:
Terminal window npx --prefix app/frontend playwright install chromium
रोज़ की जाँचें चलाएं
रोज़ की जाँचें चलाएं का लिंक-
Go कोड को बिल्ड और vet करें:
Terminal window go build ./...go vet ./... -
Go टेस्ट चलाएं:
Terminal window go test ./... -
वेब ऐप को जाँचें और टेस्ट करें:
Terminal window npm --prefix app/frontend run checknpm --prefix app/frontend run lintnpm --prefix app/frontend run test -
लेयर और फ़ाइल-लेआउट के नियम चलाएं:
Terminal window go test -tags structure ./app/backend/tools/structurecheck
कोई फ़ेल नहीं दिखना चाहिए। CI यही कमांड चलाता है, Go वाली amd64 और arm64 पर, और साथ में एक रन race detector के साथ (go test -race ./...)।
एंड-टू-एंड टेस्ट चलाएं
एंड-टू-एंड टेस्ट चलाएं का लिंकएंड-टू-एंड टेस्ट एक असली प्रोग्राम पर एक असली ब्राउज़र चलाते हैं। जिस हिस्से को आपने छुआ है, उसका प्रोजेक्ट चलाएं:
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 इन्हें सादे टेस्ट के ऊपर से चलाता है। नया वर्ज़न निकालने से पहले इन्हें चलाएं।
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| वेरिएबल | क्या करता है |
|---|---|
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 पर स्टार दें, स्पॉन्सर करें या मुझे एक कॉफ़ी पिलाएं।