From 67b6a24726541f37eacb37e1551418ad35eb275e Mon Sep 17 00:00:00 2001 From: UltimateCoder Date: Thu, 15 Oct 2026 22:34:41 +0200 Subject: [PATCH] fix: let warnaserror "false" disable -warnaserror Even as a string input, act_runner delivers the value as '%!t(string=false)', so an exact comparison never matches. Match case-insensitively on the substring "false" instead. Co-Authored-By: Claude Opus 5.5 --- .gitea/workflows/dotnet-build-test-postgres.yaml | 10 ++++++---- .gitea/workflows/dotnet-build-test.yaml | 10 ++++++---- README.md | 2 +- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/dotnet-build-test-postgres.yaml b/.gitea/workflows/dotnet-build-test-postgres.yaml index b3bee4c..5f1faeb 100644 --- a/.gitea/workflows/dotnet-build-test-postgres.yaml +++ b/.gitea/workflows/dotnet-build-test-postgres.yaml @@ -18,7 +18,7 @@ on: required: false default: "Release" type: string - # string, not boolean: act_runner mangles boolean defaults (format() yields '%!t(string=false)'). + # string, not boolean: act_runner mangles boolean defaults. The value may still arrive as '%!t(string=…)', see Build step. warnaserror: description: "Treat build warnings as errors (\"true\"/\"false\")" required: false @@ -101,9 +101,11 @@ jobs: - name: Build run: | ARGS=(-c "$CONFIGURATION" --no-restore) - if [ "${WARNASERROR,,}" != "false" ]; then - ARGS+=(-warnaserror) - fi + # act_runner may deliver the value mangled as '%!t(string=false)', so match by substring. + case "${WARNASERROR,,}" in + *false*) ;; + *) ARGS+=(-warnaserror) ;; + esac set -x dotnet build ${SOLUTION:+"$SOLUTION"} "${ARGS[@]}" diff --git a/.gitea/workflows/dotnet-build-test.yaml b/.gitea/workflows/dotnet-build-test.yaml index ccee438..ef6da49 100644 --- a/.gitea/workflows/dotnet-build-test.yaml +++ b/.gitea/workflows/dotnet-build-test.yaml @@ -18,7 +18,7 @@ on: required: false default: "Release" type: string - # string, not boolean: act_runner mangles boolean defaults (format() yields '%!t(string=false)'). + # string, not boolean: act_runner mangles boolean defaults. The value may still arrive as '%!t(string=…)', see Build step. warnaserror: description: "Treat build warnings as errors (\"true\"/\"false\")" required: false @@ -66,9 +66,11 @@ jobs: - name: Build run: | ARGS=(-c "$CONFIGURATION" --no-restore) - if [ "${WARNASERROR,,}" != "false" ]; then - ARGS+=(-warnaserror) - fi + # act_runner may deliver the value mangled as '%!t(string=false)', so match by substring. + case "${WARNASERROR,,}" in + *false*) ;; + *) ARGS+=(-warnaserror) ;; + esac set -x dotnet build ${SOLUTION:+"$SOLUTION"} "${ARGS[@]}" diff --git a/README.md b/README.md index 313641a..30a8302 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ jobs: | `solution` | `""` | Solution/project file, relative to `working-directory`. If empty, dotnet uses the single sln/proj in that directory. | | `dotnet-version` | `10.0.x` | .NET SDK version | | `configuration` | `Release` | Build configuration | -| `warnaserror` | `"true"` | Pass `-warnaserror` to `dotnet build` unless the value is `"false"` | +| `warnaserror` | `"true"` | Pass `-warnaserror` to `dotnet build` unless the value contains `false` | | `working-directory` | `.` | Where dotnet commands run | | `test-filter` | `""` | Optional `dotnet test --filter` expression |