Zum Inhalt

Maschinenübersetzung

Diese Seite wurde automatisch von KI übersetzt und kann Fehler enthalten. Bei Unklarheiten konsultieren Sie die englische Quelle.

Englische Quelle · Übersetzungsproblem melden

Test-Fixtures

tests/fixtures/ enthält deterministische, API-förmige simulierte Daten für die Test-Suite. Die Eingaben modellieren repräsentative Thread- und Workflow- Strukturen; ihre gerenderten Produkte werden als goldene Schnappschüsse festgeschrieben.

1. Quellvertrag

Der aktuell festgeschriebene Fixture-Inhalt ist simuliert:

  • Neue oder aktualisierte Fixtures müssen als simulierte Daten konstruiert werden; Mitwirkende dürfen sie nicht durch Import von web_archive/, Benutzerkontodaten, Live- API-Antworten oder privaten Archiven befüllen.
  • Namen, Identitäten, Kennungen, Eingabeaufforderungen, Antworten, Workloads, Pfade und URLs in den festgeschriebenen Dateien sind Platzhalter für Tests.
  • Das JSON spiegelt Produktionsantwort- und Archivschemata nur wider, um das Verhalten von Parser, Renderer, Zustand und Beziehung zu testen.
  • Das Repository enthält keine Rückwärtszuordnung von Platzhaltern zu privaten Kennungen.

Die Begriffe Full-Mode-Fixture und Reduced-Scenario-Fixture beschreiben die Testabdeckung und Eingabeform, nicht die Herkunft. Beide sind simulierte Daten.

2. Verzeichnisvertrag

Jedes Fixture-Verzeichnis enthält simulierte rohantwortförmige Eingaben und, wo ein Schnappschussvergleich erforderlich ist, einen golden/-Baum:

Pfad Rolle
raw_entries.json simulierte Thread-Einträge in der Produktionsantwortform
raw_blocks.json simulierte Workflow-Blöcke; fehlend, wenn der Modus keine Blockantwort hat
thread.json simulierte Metadaten archivierter Threads
golden/conversation.md + golden/turns/turn_*.md aus den simulierten Eingaben generierte Produkte, byteweise verglichen

Die aktuellen deterministischen Konventionen umfassen:

  • Platzhalterkonten alice / bob, Beispielidentitäten, einen Platzhalter-BOT- Bereich und eine feste Platzhalter-read_write_token;
  • uuid5-abgeleitete Kennungen, gekennzeichnet mit 5cbeef00, die absichtliche Querverweise zwischen simulierten Datensätzen bewahren;
  • feste Länge simulierte toolu_-Kennungen, gekennzeichnet mit 5crub0;
  • generische Eingabeaufforderungen, Titel, Workflow-Text und Dateipfade; und
  • signierte URL-Abfragezeichenfolgen entfernt.

Diese Konventionen machen versehentliche umgebungsspezifische Rückstände leicht erkennbar; sie implizieren nicht, dass die simulierten Kennungen von Live-Objekten abgeleitet wurden.

3. Bestandsaufnahme

3.1 Full-Mode-Fixtures

Dies sind vollständige simulierte Gespräche für jeden unterstützten Modus:

Fixture Abdeckung
search_demo Suche, eine Runde; R-Code-Fence und Inline-Code
deep_research_demo Deep Research; End-to-End-Mathematik-Begrenzer-Konvertierung
computer_demo Computer, sieben Runden Workflow-Rendering
council_demo Council-Modellausschuss-Rendering mit einer großen verschachtelten Nutzlast
study_demo Study-Mode-Rendering

3.2 Reduced-Scenario-Fixtures

Dies sind fokussierte simulierte Nutzlasten, die nur die Einträge und Beziehungen enthalten, die für eine Regression benötigt werden. „Reduced“ bedeutet nicht aus einem echten Thread extrahiert.

Fixture Abdeckung
scenario_computer_answer_fallback die Antwort aus einem schematisierten Workflow-Block wiederherstellen, wenn der einfache FINAL-Pfad nicht verfügbar ist
scenario_subagent_fallback eine Unter-Agent-Überschrift und ihre eigenen Elemente rendern, wenn keine Hintergrundübereinstimmung existiert
scenario_user_response WORKFLOW_ITEM_USER_RESPONSE Frage/Antwort-Rendering
scenario_subagent_stub Zehn-Sekunden-Assoziationsfenster für einen unverankerten Unteragent-Ergebnis-Stub
scenario_workflow_item_nested verschachteltes WORKFLOW_ITEM_WORKFLOW-zusammengeklapptes Block-Rendering
scenario_limit_interrupted Ausgabenlimit-Unterbrechung, Attributions-Wasserfall, Anhang-Platzierung und kein Doppel-Rendering
scenario_canceled WORKFLOW_CANCELED-Annotation

4. Fixtures warten

tests/scrub_fixtures.py normalisiert die simulierten Daten, regeneriert goldene Produkte durch den Produktions-Offline-Renderer und erzwingt eine Rückstandsprüfung:

uv run python tests/scrub_fixtures.py
uv run python tests/scrub_fixtures.py --check
  • Regeneration — jedes Fixture wird in einem temporären Verzeichnis durch pplx_export.commands.rerender_cmd.rerender gerendert; Abweichungen bei der Rundenanzahl brechen ab.
  • Deterministische Normalisierung — Platzhaltertext, UUIDs, toolu_-Werte, Token und signierte URLs werden idempotent normalisiert.
  • Sicherheitseingaben sind keine Herkunft — die optionale lokale tests/scrub_pairs.local.json und benutzerkontenbezogene Konfiguration erweitern nur Ersetzungs- und Rückstandsprüfungen. Sie dürfen nicht als Eingaben zur Konstruktion von Fixture-Szenarien verwendet werden.
  • Prüfmodus--check führt keine Schreibvorgänge durch und schlägt bei konfiguriertem Rückstand, lokalen absoluten Pfaden oder signierten URL-Anmeldeinformationen fehl.

Führen Sie das Wartungswerkzeug nach Änderungen an simulierten Eingabe-JSONs oder Renderer-Ausgaben aus und führen Sie --check vor dem Festschreiben von Fixture-Änderungen aus.

5. Goldene Schnappschuss-Autorität

Festgeschriebenes simuliertes JSON ist die Eingabeautorität. Goldenes Markdown ist abgeleitete Ausgabe: Es wird aus diesem JSON mit dem aktuellen Produktions-Neu-Render-Pfad regeneriert und dann für den Byte-Level-Regressionsvergleich festgeschrieben. Es darf nicht als unabhängige Wahrheitsquelle bearbeitet werden.

6. Siehe auch

  • Testen — wie die Suite die Fixtures verwendet
  • Test-Systemarchitektur — Regressions- Ebenen und Garantien
  • tests/fixtures/README.md — Repository-lokale Fixture-Bestandsaufnahme