From c851ac79e562f175ea563d6a1f3875ed01b09a15 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 19 Aug 2026 11:11:14 +0200 Subject: [PATCH] ci: pin invariant globalization on the Windows gate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The runner reports en-US interactively, but its scheduled task inherits en-SE (English/Sweden), whose decimal separator is a comma. That broke 40 tests across App/Core/Runtime/UI.Abstractions on number formatting alone (expected "update:0.25", actual "update:0,25"). Set-Culture does not reach a task running without a loaded user profile, and a build gate should not depend on a machine's regional settings regardless. Note for follow-up: this pins CI only. The underlying culture sensitivity is real — a Swedish-locale player would see comma-formatted numbers in these diagnostic strings. --- .gitea/workflows/ci.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 2208f27c..441a6f1d 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -41,6 +41,15 @@ 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'