test(scoreboard): check shared dev-build gate

This commit is contained in:
2026-11-02 11:28:11 -08:00
parent caf91e6564
commit 0e1f948189
2 changed files with 17 additions and 13 deletions
+11 -9
View File
@@ -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`.
+6 -4
View File
@@ -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);
}
}