בדיקות
הגדרה
בדוק את השינוי שלך על המחשב שלך לפני שאתה שולח אותו.
לפני שמתחילים
קישור אל לפני שמתחילים-
סיים את ההגדרה הראשונית. בדיקות ה-Go מגישות את אפליקציית ה-web הבנויה, ולכן בנה אותה קודם.
-
התקן את דפדפן הבדיקות פעם אחת:
Terminal window npx --prefix app/frontend playwright install chromium
להריץ את הבדיקות היומיומיות
קישור אל להריץ את הבדיקות היומיומיות-
בנה ובדוק את קוד ה-Go:
Terminal window go build ./...go vet ./... -
הרץ את בדיקות ה-Go:
Terminal window go test ./... -
בדוק והרץ בדיקות על אפליקציית ה-web:
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 (go test -race ./...).
להריץ את בדיקות ה-end-to-end
קישור אל להריץ את בדיקות ה-end-to-endבדיקות end-to-end מפעילות דפדפן אמיתי מול תוכנה אמיתית. הרץ את הפרויקט של האזור שנגעת בו:
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 | ליד הקובץ שהיא בודקת |
| Web unit | ליד הקובץ שלה, בשם name.test.ts |
| End-to-end | app/tests/<module>/ |
אף פעם אל תקרא לשירות חיצוני אמיתי. הוסף תחליף תחת app/tests/fakes. בדיקה שעוברת רק על המחשב שלך היא שבורה.
אם זה לא עובד
קישור אל אם זה לא עובדתסמין. בדיקת מבנה נכשלת. סיבה. ההודעה מציינת את הקובץ ואת הכלל ששברת. פתרון. העבר את הקוד, או העבר נתונים פשוטים מהמודול הגבוה. ראה מודולים.
תסמין. בדיקות end-to-end לא מצליחות להתחיל.
סיבה. דפדפן הבדיקות לא מותקן.
פתרון. הרץ את שורת ה-playwright install שלמעלה.
תסמין. בדיקות ה-Go נכשלות כי חסרים דפים.
סיבה. אפליקציית ה-web לא נבנתה.
פתרון. הרץ npm --prefix app/frontend run build.
למומחים
קישור אל למומחיםתגיות build
בדיקה עם תגית מדולגת ב-go test ./... רגיל. העבר -tags <tag> כדי להריץ אותה.
| תגית | מכילה |
|---|---|
structure |
כללי השכבות, מבנה הקבצים, מיקום ה-SQL וההערות ב-tools/structurecheck |
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 |
מספר הסבבים וה-seed ללולאת הקריסה ב-app/backend/internal/mediafiles/dbtests (crash_test.go), שמדלגת תחת -short |
שרתי תחליף ומשתנים
בדיקות end-to-end מפעילות שרתי תחליף למורידים, למקורות ולשרת המטא-דאטה, ולכן אף בדיקה לא מגיעה לשירות אמיתי. הבדיקות מגדירות משתנים כמו HOLYARRS_TMDB_URL, HOLYARRS_MUSICBRAINZ_URL, HOLYARRS_PLEX_URL ו-HOLYARRS_QBITTORRENT_URL כדי להפנות את התוכנה אליהם. התקנה אמיתית אף פעם לא צריכה אותם.
ל-API contract יש בדיקות משלו. TestOpenAPIGenerated נכשלת כש-openapi.json סוטה מהנתיבים, והצילום של טבלת הנתיבים ב-tools/structurecheck/testdata נכשל על כל נתיב שנוסף, הוסר או הוזז.
קשור
קישור אל קשורHolyArrs חינמי. אם זה חסך לך זמן, תן לו כוכב ב-GitHub, תמוך בפרויקט או קנה לי קפה.