From 834b7b010e69ecdbc4e9e161ae0b69086cfe3bd7 Mon Sep 17 00:00:00 2001 From: Lain Date: Wed, 19 Aug 2026 15:15:09 +0200 Subject: [PATCH] fix(ci): the release gate needs the same UTF-8 locale as CI The verify job runs the same JVM suite as ci.yml in the same image, but without ci.yml's LANG. The image drops /usr/share/locale, so the JVM inherits an ASCII sun.jnu.encoding and cannot create a file whose name is not ASCII: DiffPresenterIsWithinRootTest writes an accented filename and dies with FileNotFoundException. Reproduced locally by running that test under LANG=C, and green again under C.UTF-8. That is why 5.5.0 stopped at the gate with a green branch behind it: the locale was fixed in the workflow that runs on the pull request and not in the one that runs on main. The D-Bus and DISPLAY lines in that log are unrelated noise. They are WARNs from the platform's PasswordSafe probing the Secret Service while the headless fixture boots an in-process IDE. No UI test runs in this job: src/uiTest is a separate source set, outside check, and gated on uiTest.enabled. --- .github/workflows/release.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 242b803b..9bab7df3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -158,6 +158,12 @@ jobs: env: # MUST match GRADLE_USER_HOME in .github/ci-image/jvm-test.Dockerfile. GRADLE_USER_HOME: /opt/gradle-home + # The image drops /usr/share/locale, so the JVM inherits an ASCII `sun.jnu.encoding` and cannot create + # a file whose name is not ASCII — `DiffPresenterIsWithinRootTest` writes `fïle ñ.txt` and dies with + # FileNotFoundException. This gate runs the SAME suite as ci.yml, so it needs the SAME locale: a job + # that runs `test` without this is green on the branch and red on the release. `C.UTF-8` is built into + # glibc, so it needs no image rebuild. + LANG: C.UTF-8 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: