d24fe3a963
- PlaybackController (§12.5): Play/Pause/Stop/Retrigger, Loop/Once/ Ping-Pong mit In/Out-Fenstern, variable Geschwindigkeit ±4x (§16.6), Ende-Ereignis genau einmal je Pass, monotone Ereignis-Zeitbasis (§12.2) - PreloadSlot (§12.2): atomarer Clipwechsel preload->ready->commit; nicht bereites Medium wechselt nie (Policy beim Aufrufer) - MediaLibrary (§13.2/§13.3): Import mit SHA-256-Duplikaterkennung, Bank-Slots als explizite Show-Metadaten, fehlende Dateien markiert, Relink; Import laeuft im Control-Core-Worker, nie im Renderthread - ContentManifest (§6.4/§10.1): SHA-256 je Datei + resumierbare Chunk-Hashes, Verifikation gegen Veraenderung, Diff fuer Sync-Plan, deterministische Serialisierung mit Revision - 35 neue Unit-Tests; Gesamtsuite 258 gruen, Ruff gruen
37 lines
902 B
Python
37 lines
902 B
Python
"""Test-Pfad-Setup: macht alle hms_*-Pakete ohne Installation importierbar.
|
|
|
|
Eigentumsgrenzen bleiben gewahrt: jede Testsuite importiert nur die
|
|
Pakete, die sie prüft; Quereinbau zwischen packages/* bleibt verboten.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
REPO = Path(__file__).resolve().parents[1]
|
|
|
|
_PACKAGE_DIRS = [
|
|
"packages/protocol",
|
|
"packages/domain",
|
|
"packages/parameter_engine",
|
|
"packages/artnet",
|
|
"packages/adaptive_quality",
|
|
"packages/capabilities",
|
|
"packages/plugin_sdk",
|
|
"packages/persistence",
|
|
"packages/cluster",
|
|
"packages/media",
|
|
"packages/content_sync",
|
|
"apps/renderer",
|
|
"apps/control_server",
|
|
"apps/launcher",
|
|
"tools/fixture_generator",
|
|
"tools/artnet_emulator",
|
|
]
|
|
|
|
for _sub in _PACKAGE_DIRS:
|
|
_dir = str(REPO / _sub)
|
|
if _dir not in sys.path:
|
|
sys.path.insert(0, _dir)
|