Prüfbereiche: Teile, abhängige Bereiche und Ablauf-Prüfungen
Ein Arbeitspaket prüft, was es berührt, nicht die ganze Suite. Diese Seite zeigt, wie ein Projekt seine Prüfungen dafür zuordnet; die Grundlagen stehen in der Dokumentation.
Bereiche einrichten und pflegen
- Vorschlag holen:
node .claude/kit/checks.mjs areas suggestmisst, welche Dateien jeder Test lädt oder nennt, in JavaScript, TypeScript und Java. Er nennt je Bereich die Muster samt den Tests und Dateien dahinter und je Prüfkommando die Bereiche, die es auslösen soll. Ohne Config bilden die Ordner der Testdateien die Gruppen. - Lesen: Jeden Bereich an den genannten Tests nachvollziehen. Zusammenlegen und Teilen begründet der Vorschlag ebenso; ein Kommando, dessen Tests getrennte Bereiche laden, nennt er mit den Testdateien je Teil, ohne Kommandozeile.
- Übernehmen: Der Vorschlag ändert die Config nie. Was passt, trägt der Mensch in
checkAreasund in dieareasderbuildChecksein, ganz, teilweise oder gar nicht. - Gerüst-Pfade: Erwähnen viele Tests einen Pfad nur, ohne ihn zu laden, nennt der Vorschlag ihn als Kandidaten für
nurGeruest. Ein Eintrag trägt Muster und Grund; die Messung zählt den Pfad dann nicht als geladen. - Abgleichen:
node .claude/kit/checks.mjs areas comparevergleicht die Config mit der Messung. Lädt ein Test eine Datei, deren Bereich sein Kommando nicht auslöst, ist das eine Lücke und ein Risiko; ein Bereich, den keiner der Tests lädt, ist nur ein Hinweis. Derselbe Abgleich läuft alshinweis:im Prüflauf jedes Pakets, das eine Testdatei anlegt oder ändert, und im Runner sammelt ihn der Laufbericht. Er hält nie an und ändert nichts. - Nicht beurteilbar: Lässt sich nicht ermitteln, welche Tests ein Kommando fährt, etwa bei einer anderen Sprache, behält es seine Bereiche und steht mit Grund als „nicht beurteilbar“ da. Linter und Kommandos mit
alwaysgelten als „nicht aus der Auswertung abgeleitet“. Eine fehlende Messung ist nie eine Entwarnung.
Teile und Bereiche
Ein Bereich ist ein Name in checkAreas mit einer Liste von Dateimustern. Ein Prüfkommando in buildChecks nennt in areas seine Bereiche, und checks.mjs run startet nur die Kommandos, deren Bereiche eine Änderung berührt.
Ein Teil ist eine Quelldatei oder kleine Gruppe mit eigenem Bereich und eigenen Tests. Eine Änderung löst seine Tests aus und die der Teile, die von ihm abhängen.
Abhängige Bereiche aus dem Importgraphen
Welche Teile mitbetroffen sind, leitet checks.mjs aus dem Importgraphen ab:
- Von jeder geänderten Datei läuft die Kette transitiv zu allen Dateien, die sie importieren; jede erreichte berührt ihre Bereiche.
- Der Bericht nennt den Weg, etwa
Bereich board-einstieg beruehrt ueber Import von kit/board/grundlagen.mjs. - Lassen sich die Importe nicht erheben, gilt der volle Umfang.
Die Ableitung irrt nur in eine Richtung: Im Zweifel prüft sie mehr, nie weniger.
Gemeinsame Grundlagen
Was fast jeder Teil braucht, steht in einem eigenen Teil; eine Änderung daran löst über den Graphen die abhängigen Teile aus. Testhilfen stehen in den Mustern aller Bereiche, die sie nutzen. Eine Datei ohne Muster löst den vollen Umfang aus.
Grenze: nur JavaScript-Quellen
Der Graph entsteht aus Dateien mit der Endung .mjs, .cjs oder .js, die einander importieren. Projekte in anderen Sprachen ordnen allein über die Muster in checkAreas zu. Die Messung für areas suggest und areas compare läuft für TypeScript und Java dagegen von Quelle zu Quelle weiter.
Nicht literale Importe sind unsichtbar
Erhoben werden statische und dynamische Importe mit literalem Pfad (import "./x.mjs", await import("./x.mjs")). Ein Pfad, der erst zur Laufzeit entsteht, etwa über pathToFileURL(join(dir, name)), bleibt unsichtbar. Solche Kopplungen gehören von Hand in die areas des Prüfkommandos, dessen Teil den Nachbarn lädt.
Ablauf-Prüfungen
Die meisten Tests rufen einen Teil im selben Prozess auf. Was sich nur als ganzer Ablauf belegen lässt, etwa ein Programm, das ein anderes als Kindprozess startet, prüfen Ablauf-Prüfungen.
Kennzeichnung: Eine Testdatei, die selbst oder über einen Helfer ein Programm des Projekts als Kindprozess startet, trägt im Kopf die Zeile
js// Ablauf-Pruefung: <Grund, warum ein leichter Beleg nicht reicht>Gruppe: Ablauf-Prüfungen laufen in eigenen Prüfkommandos, getrennt von den leichten Tests. Deren
areasnennen die Bereiche aller Programme, die der Ablauf startet.
Die Regeln des Wächters
Im Kit prüft ein Wächtertest jede Testdatei bei jeder Änderung unter test/:
- Kennzeichnen: Wer einen Kindprozess startet, auch über Helfer, trägt die Zeile
// Ablauf-Pruefung:mit Grund. - Keine Pausen: keine feste Wartezeit; begrenztes Warten auf eine Bedingung nur in einer Ablauf-Prüfung.
- Gekennzeichnete Hänger:
sleep <n>in einer Attrappe nur mit# haengtin derselben Zeile. - Import aus dem Teil: Ein leichter Test importiert aus dem Teil, nicht aus dem Einstieg.
Ein Projekt kann das Muster übernehmen.
Zuordnungshilfe: breit zugeordnete Kommandos
Nennen die areas eines Kommandos alle Bereiche oder alle bis auf einen, bei mindestens drei bereichsgebundenen Kommandos, melden plan und run:
hinweis: <cmd> ist jedem Bereich zugeordnet und laeuft bei jeder Aenderung — Zuschnitt pruefen (checks.mjs areas)node .claude/kit/checks.mjs areas zeigt die Auswertung je Bereich.
coupledAreas
Ist die Breite gewollt, trägt die Config den Bereich mit Grund ein:
"coupledAreas": [
{ "area": "grundlagen", "reason": "jede Testgruppe laedt die gemeinsame Fixture" }
]Der Eintrag unterdrückt nur die Hinweiszeile; ohne Grund kein Eintrag. Er gilt teamweit.