Μετάβαση στο περιεχόμενο

Δοκιμές

Ρύθμιση

Έλεγξε την αλλαγή σου στον υπολογιστή σου πριν τη στείλεις.

  • Ολοκλήρωσε τη Ρύθμιση. Οι δοκιμές Go σερβίρουν τη διαδικτυακή εφαρμογή που έχει γίνει build, οπότε κάνε πρώτα build.

  • Εγκατάστησε μία φορά το πρόγραμμα περιήγησης των δοκιμών:

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

Τρέξε τους καθημερινούς ελέγχους

Σύνδεσμος προς Τρέξε τους καθημερινούς ελέγχους
  1. Κάνε build και vet στον κώδικα Go:

    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 ./...).

Οι end-to-end δοκιμές οδηγούν ένα πραγματικό πρόγραμμα περιήγησης πάνω σε ένα πραγματικό πρόγραμμα. Τρέξε το project για την περιοχή που άγγιξες:

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

Το τρέξιμο ξεκινά το δικό του HolyArrs με φρέσκο φάκελο ρυθμίσεων. Το project setup φτιάχνει πρώτο τον ιδιοκτήτη, και τα περισσότερα άλλα projects το περιμένουν. Τρέξε την πλήρη σουίτα χωρίς --project πριν από μια έκδοση.

Άλλαξες Τρέξε
Ταινίες 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 τα τρέχει επιπλέον των απλών δοκιμών. Τρέξε τα πριν από μια έκδοση.

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 έχει δικές του δοκιμές. Το TestOpenAPIGenerated αποτυγχάνει όταν το openapi.json αποκλίνει από τις διαδρομές, και το στιγμιότυπο του πίνακα διαδρομών στο tools/structurecheck/testdata αποτυγχάνει σε κάθε διαδρομή που προστέθηκε, αφαιρέθηκε ή μετακινήθηκε.

Το HolyArrs είναι δωρεάν. Αν σου γλίτωσε χρόνο, βάλε του αστέρι στο GitHub, γίνε χορηγός ή κέρασέ με έναν καφέ.