dragon-iso/src/tests/TeamsISO.Engine.Tests
Zac Gaetano d880941ad5
Some checks failed
CI / build-and-test (push) Failing after 26s
fix(ndi): canonicalize 'public' -> 'Public' in discovery + sender group strings (the real bug)
6+ hours of misdiagnosis today, root cause finally found this evening: the user's config.json persisted ndiGroups.discoveryGroups = 'public,teamsiso-input'. NDI group names are case-sensitive in the runtime. Teams broadcasts to the canonical 'Public' (capital P) group. Lowercase 'public' didn't match -> NDI Find returned zero sources forever. NDI Studio Monitor sees Teams sources because it uses default groups (no filter = 'Public'). Every TeamsISO launch that read the config got zero -> looked like a TeamsISO bug.

Fix: add NdiInteropPInvoke.NormalizeGroups that case-folds 'Public' specifically (the most common operator footgun) while passing through custom group names (e.g. 'teamsiso-input') verbatim. Wire it into CreateFinder and CreateSender. End-to-end test: restored bad lowercase config -> launched via Start Menu shortcut -> Serilog now logs 'NDI finder created with groups: Public,teamsiso-input' (note capital P) -> REST returns 2 participants. 264/264 tests passing (Engine 124 +12 NormalizeGroups cases, App 131, Integration 9).

Also adds InternalsVisibleTo on the NdiInterop project so the engine test project can cover the internal helper directly.
2026-05-16 18:33:49 -04:00
..
Controller test: services — NotesService, UpdateChecker, PresetApplier, OscBridge, IsoController 2026-05-15 21:06:45 -04:00
Discovery test(engine): extract ShouldAutoRebuild as pure fn + cover 6 cases 2026-05-16 13:38:44 -04:00
Domain fix(parser): accept 'MS Teams' brand prefix from current Teams NDI broadcasts 2026-05-07 23:33:43 -04:00
Fakes Audio peak: high-water mark across UI poll interval 2026-05-10 14:04:04 -04:00
Interop fix(ndi): canonicalize 'public' -> 'Public' in discovery + sender group strings (the real bug) 2026-05-16 18:33:49 -04:00
Logging feat(logging): rolling file sink under %LOCALAPPDATA%\\TeamsISO\\Logs 2026-05-08 00:47:25 -04:00
Persistence feat(persistence): add ConfigStore with atomic JSON writes and corruption-safe load 2026-05-07 15:12:01 +00:00
Pipeline Audio peak: high-water mark across UI poll interval 2026-05-10 14:04:04 -04:00
GlobalUsings.cs feat(domain): add core enums (NdiSourceKind, IsoState, AspectMode, AudioMode, TargetFramerate, TargetResolution) 2026-05-07 15:10:29 +00:00
TeamsISO.Engine.Tests.csproj fix(ndi): canonicalize 'public' -> 'Public' in discovery + sender group strings (the real bug) 2026-05-16 18:33:49 -04:00