Zwei Pruefungen massen einen Stand, den es nicht mehr gibt
Beide Befunde sind heute beim Umzug des Vorlagenkatalogs aufgefallen,
gehoeren aber nicht dazu -- sie lagen schon vorher da und haetten bei
jedem Lauf mitgemeldet, bis sie niemand mehr liest.
pruef-struktur las Server-Routen nur in doppelten Anfuehrungszeichen.
Wer eine Route in einer Schleife registriert, schreibt sie aber als
Template:
for (const weg of ["annehmen", "ablehnen"])
router.post(`/workspace/api/vorlagen/bewerbung/${weg}`, ...)
Diese Routen fehlten in der Liste, und die Aufrufe dorthin galten als
"Schnittstelle gibt es nicht" -- obwohl sie laufen. Die Erfassung der
AUFRUFE kannte alle drei Zeichen laengst; nur die der ROUTEN nicht.
Zwei Regeln fuer dieselbe Frage, und eine davon war aelter. Gemessen:
319 statt 315 Routen, und der Fehlalarm ist weg. Die Gegenproben
schlagen weiter an ("erfundene Schnittstelle wird als fehlend
erkannt").
pruef-aufgaben-vorlagen zaehlte KARTEN und erwartete +1. Seit das
Brett gleiche Aufgaben zu einer Sammelkarte zusammenfasst, stimmt das
nicht mehr -- die Pruefung legt kurz davor sieben Vorlagen derselben
Stufe an, und die neue wanderte in eine bestehende Karte. Sie meldete
"9 -> 9" und behauptete damit, das Uebernehmen sei kaputt; drei Zeilen
weiter erkannte sie dieselbe Aufgabe als "schon uebernommen" wieder.
Jetzt zaehlt sie Aufgaben: "9 -> 10 Aufgaben in 9 Karten".
Dieselbe Stelle gab es zweimal. In pruef-modi-katalog ist sie gestern
repariert worden -- hier nicht, weil ich nach dem ersten Fund nicht
weitergesucht habe.
Co-Authored-By: Claude Opus 5 <[email protected]>
This commit is contained in:
@@ -359,14 +359,35 @@ console.log("\n=== Auf der Aufgabenseite");
|
||||
const nachher = await seite.textContent("#vorlagenbrett .vorlagenbrett__titel");
|
||||
ok(vorher !== nachher, `ein anderer Bereich zeigt andere Aufgaben ("${vorher}" → "${nachher}")`);
|
||||
|
||||
/* Und der Weg bis zum Brett. */
|
||||
const zaehle = () => seite.evaluate(() => document.querySelectorAll("#brett .karte").length);
|
||||
/* Und der Weg bis zum Brett.
|
||||
|
||||
GEZAEHLT WERDEN AUFGABEN, NICHT KARTEN (berichtigt 23.09.2026).
|
||||
|
||||
Seit dem Brett-Umbau vom selben Tag fasst das Brett gleiche
|
||||
Aufgaben zu EINER Karte zusammen. Eine neue Aufgabe erhoeht die
|
||||
Kartenzahl also nur dann, wenn es noch keine gleichnamige gibt --
|
||||
und die Pruefung legt kurz vorher sieben Vorlagen derselben Stufe
|
||||
an. Sie meldete "9 -> 9" und behauptete damit, das Uebernehmen sei
|
||||
kaputt; es war die Zaehlweise. Die Aufgabe war jede Zeit da, drei
|
||||
Zeilen weiter wird sie sogar als "schon übernommen" wiedererkannt.
|
||||
|
||||
Dieselbe Stelle gab es ein zweites Mal in pruef-modi-katalog. Dort
|
||||
ist sie am 23.09. repariert worden -- hier nicht, weil ich nach
|
||||
dem ersten Fund nicht weitergesucht habe. Jede Karte weist ihre
|
||||
Aufgaben aus: data-id (eine) oder data-ids (mehrere). */
|
||||
const zaehle = () => seite.evaluate(() =>
|
||||
[...document.querySelectorAll("#brett .karte")]
|
||||
.reduce((n, k) => n + (k.dataset.ids || k.dataset.id || "")
|
||||
.split(",").filter(Boolean).length, 0));
|
||||
const zaehleKarten = () => seite.evaluate(() =>
|
||||
document.querySelectorAll("#brett .karte").length);
|
||||
const brettVorher = await zaehle();
|
||||
await seite.click("#vorlagenbrett .vorlagenbrett__fuss .knopf");
|
||||
await seite.waitForTimeout(2500);
|
||||
const brettNachher = await zaehle();
|
||||
ok(brettNachher === brettVorher + 1,
|
||||
`Übernehmen legt eine Aufgabe auf dem Brett an (${brettVorher} → ${brettNachher})`);
|
||||
`Übernehmen legt eine Aufgabe auf dem Brett an (${brettVorher} → ${brettNachher}`
|
||||
+ ` Aufgaben in ${await zaehleKarten()} Karten)`);
|
||||
|
||||
/* ---- WAS SCHON GEHOLT WURDE, STEHT DA (09.09.2026) -----------------
|
||||
Vorher konnte man dieselbe Vorlage zweimal uebernehmen und bekam
|
||||
|
||||
@@ -54,8 +54,25 @@ ok(serverDateien.length >= 20, `${serverDateien.length} Server-Module gefunden`)
|
||||
const ROUTEN = [];
|
||||
for (const datei of serverDateien) {
|
||||
const text = readFileSync(join(SERVER, datei), "utf8");
|
||||
/* AUCH ROUTEN IN ANFUEHRUNGSSTRICHEN UND BACKTICKS (23.09.2026).
|
||||
|
||||
Hier stand nur das doppelte Anfuehrungszeichen. Wer eine Route in
|
||||
einer Schleife registriert, schreibt sie aber als Template:
|
||||
|
||||
for (const weg of ["annehmen", "ablehnen"])
|
||||
router.post(`/workspace/api/vorlagen/bewerbung/${weg}`, ...)
|
||||
|
||||
Diese Routen fehlten in der Liste -- und die Aufrufe dorthin
|
||||
wurden als "Schnittstelle gibt es nicht" gemeldet, obwohl sie
|
||||
jeden Tag laufen. Ein Fehlalarm, den man zweimal liest und dann
|
||||
nicht mehr; genau davor warnt der Kommentar weiter unten bei den
|
||||
sechs angeblich verwaisten Seiten.
|
||||
|
||||
Die Erfassung der AUFRUFE kannte alle drei Zeichen schon
|
||||
(["'`]) -- nur die Erfassung der ROUTEN nicht. Zwei Regeln fuer
|
||||
dieselbe Frage, und eine davon war aelter. */
|
||||
const treffer = text.matchAll(
|
||||
/Router\.(get|post|patch|put|delete|use)\(\s*\n?\s*"(\/workspace\/[^"]*)"/g);
|
||||
/Router\.(get|post|patch|put|delete|use)\(\s*\n?\s*["'`](\/workspace\/[^"'`]*)/g);
|
||||
for (const t of treffer) ROUTEN.push({ art: t[1], pfad: t[2], datei });
|
||||
}
|
||||
ok(ROUTEN.length >= 80, `${ROUTEN.length} Server-Routen eingelesen`);
|
||||
@@ -77,7 +94,12 @@ function routeGibtEs(pfad, art) {
|
||||
if (art && r.art !== art) return false;
|
||||
const teileB = r.pfad.split("/").filter(Boolean);
|
||||
if (teileA.length !== teileB.length) return false;
|
||||
return teileB.every((t, i) => t.startsWith(":") || t === "*" || t === teileA[i]);
|
||||
/* ${...} IN EINER ROUTE IST EIN PLATZHALTER wie :id -- was dort
|
||||
eingesetzt wird, entscheidet die Schleife beim Start. Der
|
||||
Aufrufpfad ist oben schon zu "1" normalisiert worden; ohne diese
|
||||
Zeile verglichen wir "1" mit "${weg}" und faenden nie etwas. */
|
||||
return teileB.every((t, i) => t.startsWith(":") || t === "*"
|
||||
|| t.includes("${") || t === teileA[i]);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user