diff --git a/HANDOFF.md b/HANDOFF.md index 2f82822..f8bf2cc 100644 --- a/HANDOFF.md +++ b/HANDOFF.md @@ -8,23 +8,25 @@ - `ScoreboardPropertiesTests` now checks for the themed `PropertyPillCheck` style instead of stale `YtCheckBox` markup; committed as `221b816`. - `PropertiesHierarchyTests` now checks shared styles and scopes the duplicate shape bindings to - the Shape block; focused test passes. This task is ready to commit. -- `GeometryFieldWidthTests` now identifies the shared draggable-layer Geometry block; focused test - passes. This task is ready to commit. -- `NotificationServiceTests` now run tint assertions with the real theme resources and expect the - current `Brush.ErrorContainer` token; all 8 tests in that class pass. This task is ready to commit. -- Clean app build is 0 warnings. Full suite: 5 failed / 517 passed of 522; remaining failures are + the Shape block; committed as `91e308e`. +- `GeometryFieldWidthTests` now identifies the shared draggable-layer Geometry block; committed as + `82609a5`. +- `NotificationServiceTests` runs tint assertions with real theme resources and uses the current + `Brush.ErrorContainer` token; committed as `caf91e6`. +- `ScoreboardSimulationTests` now checks the shared `Helpers/DevBuild.cs` compile-time gate; focused + test passes. This task is ready to commit. +- Clean app build is 0 warnings. Full suite: 4 failed / 518 passed of 522; remaining failures are being handled one task and one local commit at a time. ## Next action -Commit the notification tint test fix, then take the next remaining failure. Do not push absent a -milestone/checkpoint request. +Commit the scoreboard-simulation guard update, then take the next remaining failure. Do not push +absent a milestone/checkpoint request. ## Landmines - Build/test with Windows `dotnet.exe`; the full suite can hang in WASAPI teardown. -- `verify.sh` cannot pass until the remaining 5 suite failures are resolved; scope checks are run +- `verify.sh` cannot pass until the remaining 4 suite failures are resolved; scope checks are run separately when that gate exits early. - Any integration test constructing `MainWindow` must set `LayoutPathOverride` to a temporary DB and clear it in `finally`. diff --git a/ytLive.Tests/ScoreboardSimulationTests.cs b/ytLive.Tests/ScoreboardSimulationTests.cs index 6b85044..29c3ffb 100644 --- a/ytLive.Tests/ScoreboardSimulationTests.cs +++ b/ytLive.Tests/ScoreboardSimulationTests.cs @@ -42,9 +42,11 @@ public class ScoreboardSimulationTests var type = typeof(MainViewModel); Assert.NotNull(type.GetProperty("ScoreboardSimulate")); Assert.NotNull(type.GetProperty("IsDevelopmentBuild")); - // DEBUG-gated at compile time, so a Release build has no dev control at all. - Assert.Contains("#if DEBUG", vmSource); - Assert.Contains("private const bool DevelopmentBuild = true;", vmSource); - Assert.Contains("private const bool DevelopmentBuild = false;", vmSource); + // DEBUG-gated at compile time through the shared build flag, not duplicated in the VM. + var devBuild = SourceAssert.Text("Helpers", "DevBuild.cs"); + Assert.Contains("#if DEBUG", devBuild); + Assert.Contains("true;", devBuild); + Assert.Contains("#else", devBuild); + Assert.Contains("false;", devBuild); } }