From c5492984ef9cb8832b90368e60eb0e10302cdb80 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 19 Aug 2026 11:19:14 +0200 Subject: [PATCH] ci: tag DAT-dependent tests into the InstalledDat lane; drop invariant workaround Three tests reached the CI gate needing the installed retail DATs, which no build machine has, and failed with FileNotFoundException on client_cell_1.dat: - Issue127FloodFlipReplayTests (both facts replay via ResolveDatDir) - FindCellListConformanceTests.FindCellList_DoorwayThreshold_IndoorPicks_ MatchRetail, the one untagged method among already-tagged siblings They now carry [Trait("Lane", "InstalledDat")] like every other DAT test, so the gate filter excludes them and the local DAT lane still runs them. Also reverts the DOTNET_SYSTEM_GLOBALIZATION_INVARIANT pin from the previous commit. It was too blunt: it fixed the 40 decimal-comma failures but broke ChatLogTests.FormatTimestampPrefix_UsesLiteralColons_RegardlessOfCurrentCulture, which legitimately constructs a culture and cannot under invariant mode. The runner's HKCU locale (LocaleName=en-SE, sDecimal=',') was corrected to en-US instead, which is the actual defect. --- .gitea/workflows/ci.yml | 9 --------- .../Rendering/Issue127FloodFlipReplayTests.cs | 1 + .../Conformance/FindCellListConformanceTests.cs | 1 + 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 441a6f1d..2208f27c 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -41,15 +41,6 @@ jobs: - name: Test (lane-filtered, streaming) shell: pwsh - env: - # The gate must not depend on the runner's regional settings. This - # box reports en-US interactively but the scheduled task inherits - # en-SE (English/Sweden, COMMA decimal separator), which broke 40 - # tests across four projects on formatted numbers alone — - # e.g. expected "update:0.25", got "update:0,25". Set-Culture does - # not reach a task that runs without loading the user profile, so - # pin globalization for the test processes instead. - DOTNET_SYSTEM_GLOBALIZATION_INVARIANT: '1' run: | $ErrorActionPreference = 'Stop' $filter = 'Lane!=InstalledDat&Lane!=PreparedPackage&Lane!=Live&Lane!=Manual&Lane!=Windows&Lane!=Linux&Lane!=SystemFont&Purpose!=Diagnostic&Status!=KnownFailure' diff --git a/tests/AcDream.App.Tests/Rendering/Issue127FloodFlipReplayTests.cs b/tests/AcDream.App.Tests/Rendering/Issue127FloodFlipReplayTests.cs index 72bd3385..6a53f9ae 100644 --- a/tests/AcDream.App.Tests/Rendering/Issue127FloodFlipReplayTests.cs +++ b/tests/AcDream.App.Tests/Rendering/Issue127FloodFlipReplayTests.cs @@ -30,6 +30,7 @@ namespace AcDream.App.Tests.Rendering; /// bistable admission, and the bisect along the eye segment names the knife /// edge. /// +[Trait("Lane", "InstalledDat")] public class Issue127FloodFlipReplayTests { private readonly ITestOutputHelper _out; diff --git a/tests/AcDream.Core.Tests/Conformance/FindCellListConformanceTests.cs b/tests/AcDream.Core.Tests/Conformance/FindCellListConformanceTests.cs index fe4e03aa..5d94f6d0 100644 --- a/tests/AcDream.Core.Tests/Conformance/FindCellListConformanceTests.cs +++ b/tests/AcDream.Core.Tests/Conformance/FindCellListConformanceTests.cs @@ -130,6 +130,7 @@ public class FindCellListConformanceTests /// separate outdoor-entry validation. /// [Fact] + [Trait("Lane", "InstalledDat")] public void FindCellList_DoorwayThreshold_IndoorPicks_MatchRetail() { var (cache, picks) = LoadThresholdGolden();