Δοκιμές
Ρύθμιση
Έλεγξε την αλλαγή σου στον υπολογιστή σου πριν τη στείλεις.
Πριν ξεκινήσεις
Σύνδεσμος προς Πριν ξεκινήσεις-
Ολοκλήρωσε τη Ρύθμιση. Οι δοκιμές Go σερβίρουν τη διαδικτυακή εφαρμογή που έχει γίνει build, οπότε κάνε πρώτα build.
-
Εγκατάστησε μία φορά το πρόγραμμα περιήγησης των δοκιμών:
Terminal window npx --prefix app/frontend playwright install chromium
Τρέξε τους καθημερινούς ελέγχους
Σύνδεσμος προς Τρέξε τους καθημερινούς ελέγχους-
Κάνε build και vet στον κώδικα Go:
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 ./...).
Τρέξε τις end-to-end δοκιμές
Σύνδεσμος προς Τρέξε τις end-to-end δοκιμέςΟι end-to-end δοκιμές οδηγούν ένα πραγματικό πρόγραμμα περιήγησης πάνω σε ένα πραγματικό πρόγραμμα. Τρέξε το project για την περιοχή που άγγιξες:
npm --prefix app/frontend run e2e -- --project=moviesΤο τρέξιμο ξεκινά το δικό του HolyArrs με φρέσκο φάκελο ρυθμίσεων. Το project setup φτιάχνει πρώτο τον ιδιοκτήτη, και τα περισσότερα άλλα projects το περιμένουν. Τρέξε την πλήρη σουίτα χωρίς --project πριν από μια έκδοση.
Επιλογές
Σύνδεσμος προς ΕπιλογέςΠοια projects να τρέξεις
Σύνδεσμος προς Ποια projects να τρέξεις| Άλλαξες | Τρέξε |
|---|---|
| Ταινίες | movies |
| Σειρές | shows |
| Αιτήματα | requests, lists, reports |
| Λήψεις | sources, downloaders, downloads |
| Σύνδεση και χρήστες | accounts, kid |
| Υγεία και χρονοπρογραμματισμοί | schedules, controls |
| Διάταξη σελίδων | desktop, phone, a11y |
Τα projects ορίζονται στο app/frontend/playwright.config.ts. Ένα project που εξαρτάται από άλλο τρέχει πρώτα εκείνο.
Πού πηγαίνει μια νέα δοκιμή
Σύνδεσμος προς Πού πηγαίνει μια νέα δοκιμή| Είδος | Πού |
|---|---|
| Go | Δίπλα στο αρχείο που δοκιμάζει |
| Web unit | Δίπλα στο αρχείο του, ως name.test.ts |
| End-to-end | app/tests/<module>/ |
Μην καλείς ποτέ πραγματική εξωτερική υπηρεσία. Πρόσθεσε ένα υποκατάστατο κάτω από το app/tests/fakes. Μια δοκιμή που περνά μόνο στον υπολογιστή σου είναι χαλασμένη.
Αν δεν δουλεύει
Σύνδεσμος προς Αν δεν δουλεύειΣύμπτωμα. Αποτυγχάνει ένας έλεγχος δομής. Αιτία. Το μήνυμα ονομάζει το αρχείο και τον κανόνα που έσπασες. Λύση. Μετακίνησε τον κώδικα, ή πέρασε απλά δεδομένα από το ψηλότερο module. Δες το Modules.
Σύμπτωμα. Οι end-to-end δοκιμές δεν ξεκινούν.
Αιτία. Το πρόγραμμα περιήγησης των δοκιμών δεν είναι εγκατεστημένο.
Λύση. Τρέξε τη γραμμή playwright install παραπάνω.
Σύμπτωμα. Οι δοκιμές Go αποτυγχάνουν επειδή λείπουν σελίδες.
Αιτία. Η διαδικτυακή εφαρμογή δεν έχει γίνει build.
Λύση. Τρέξε npm --prefix app/frontend run build.
Για έμπειρους
Σύνδεσμος προς Για έμπειρουςBuild tags
Μια δοκιμή με tag παραλείπεται σε ένα απλό go test ./.... Πέρασε -tags <tag> για να τρέξει.
| 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 έχει δικές του δοκιμές. Το TestOpenAPIGenerated αποτυγχάνει όταν το openapi.json αποκλίνει από τις διαδρομές, και το στιγμιότυπο του πίνακα διαδρομών στο tools/structurecheck/testdata αποτυγχάνει σε κάθε διαδρομή που προστέθηκε, αφαιρέθηκε ή μετακινήθηκε.
Σχετικά
Σύνδεσμος προς ΣχετικάΤο HolyArrs είναι δωρεάν. Αν σου γλίτωσε χρόνο, βάλε του αστέρι στο GitHub, γίνε χορηγός ή κέρασέ με έναν καφέ.