דלגו לתוכן

בדיקות

הגדרה

בדוק את השינוי שלך על המחשב שלך לפני שאתה שולח אותו.

  • סיים את ההגדרה הראשונית. בדיקות ה-Go מגישות את אפליקציית ה-web הבנויה, ולכן בנה אותה קודם.

  • התקן את דפדפן הבדיקות פעם אחת:

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

להריץ את הבדיקות היומיומיות

קישור אל להריץ את הבדיקות היומיומיות
  1. בנה ובדוק את קוד ה-Go:

    Terminal window
    go build ./...
    go vet ./...
  2. הרץ את בדיקות ה-Go:

    Terminal window
    go test ./...
  3. בדוק והרץ בדיקות על אפליקציית ה-web:

    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 (go test -race ./...).

להריץ את בדיקות ה-end-to-end

קישור אל להריץ את בדיקות ה-end-to-end

בדיקות end-to-end מפעילות דפדפן אמיתי מול תוכנה אמיתית. הרץ את הפרויקט של האזור שנגעת בו:

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 ליד הקובץ שהיא בודקת
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 מריץ אותן בנוסף לבדיקות הרגילות. הרץ אותן לפני גרסה.

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 מספר הסבבים וה-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, תמוך בפרויקט או קנה לי קפה.