From 81b82bac9d2c1813e0bbab622a76fc7b8b6c6ee7 Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Mon, 20 Jul 2026 01:15:19 +0000 Subject: [PATCH 1/3] chore: add changelog placeholder for buildtest flag typo fixes (#679) Reserves the changelog entry for the development/buildtest fix ahead of implementation: the --no-benchmmarks/--no-integratopn flag typos and the broken TEST_INTEGRATION filter assignment. Prompt: Work on issue #679 in credfeto/scripts. --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fb846bae..3fc99444 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,9 @@ # Changelog All notable changes to this project will be documented in this file. +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + @@ -50,6 +53,7 @@ Please ADD ALL Changes to the UNRELEASED SECTION and not a specific release - git/ignore-changelog: skip push hooks when pushing to target repositories - git/fetch and git/switchtomain now warn and skip a repo on error instead of aborting the whole run, so remaining repos still get processed. - development/buildtest now runs unit tests first, always excluding benchmark test projects, then runs any benchmark projects found individually without the --long-running/--parallel-algorithm flags, since some benchmark projects' test host rejects them as invalid arguments (exit code 5, zero tests ran) instead of running +- development/buildtest: fixed the --no-benchmarks/--no-integration flag typos and the broken TEST_INTEGRATION filter assignment so --no-integration actually excludes integration tests ### Changed - Replace raw echo with standard output helpers (die/info/success) in github/cancel-workflows - Replace raw echo with standard output helpers (die/info/success) in git/update-repos-personal From 2759ad0f1a40133747e8a0cf0822bee9f9cfb397 Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Mon, 20 Jul 2026 01:53:07 +0000 Subject: [PATCH 2/3] fix: correct buildtest --no-benchmarks/--no-integration flag typos and TEST_INTEGRATION assignment The --no-benchmmarks and --no-integratopn option names were misspelled so neither flag could ever be passed on the command line, and the TEST_INTEGRATION assignment split into a bare variable assignment followed by an attempt to execute "*.Integration.Tests" as a command instead of capturing the filter arguments. Fixes #679 --- development/buildtest | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/development/buildtest b/development/buildtest index a23b2a61..b738e2c7 100755 --- a/development/buildtest +++ b/development/buildtest @@ -66,12 +66,12 @@ while [ $# -gt 0 ]; do [ -f "$SOURCE_DIR/release.rule-settings.json" ] && RULESET_ADJUSTMENT_FILE="$SOURCE_DIR/release.rule-settings.json" shift # past argument ;; - -b|--no-benchmmarks) + -b|--no-benchmarks) TEST_BENCHMARKS=1 shift # past argument ;; - -i|--no-integratopn) - TEST_INTEGRATION=--filter-not-namespace "*.Integration.Tests" --filter-not-namespace "*.Integration.Tests.*" + -i|--no-integration) + TEST_INTEGRATION="--filter-not-namespace *.Integration.Tests --filter-not-namespace *.Integration.Tests.*" shift # past argument ;; *) # unknown option @@ -162,7 +162,7 @@ dotnet build \ info "Testing..." # Every benchmark test project is always excluded here, regardless of the -# -b/--no-benchmmarks flag; benchmarks (if any) are run separately below, one +# -b/--no-benchmarks flag; benchmarks (if any) are run separately below, one # project per dotnet test invocation, since some benchmark projects' test # host rejects --long-running/--parallel-algorithm as invalid arguments when # passed to a combined run. From 3c5866db46ad2025acce60070206d35762b2757e Mon Sep 17 00:00:00 2001 From: Mark Ridgwell <273118822+dnyw4l3n13@users.noreply.github.com> Date: Mon, 20 Jul 2026 07:12:32 +0000 Subject: [PATCH 3/3] fix: prevent glob expansion from corrupting buildtest --no-integration filter The TEST_INTEGRATION variable is expanded unquoted at the dotnet test call site to get word-splitting across the two --filter-not-namespace arguments. That same unquoted expansion also triggers shell pathname expansion: since the script cd's into the solution root before this runs, a *.Integration.Tests(.*)-matching file there would have its glob silently replaced by matching filenames instead of the literal filter, corrupting --no-integration. Wrap the dotnet test invocation with set -f/set +f (POSIX-portable) to disable globbing while keeping word-splitting. Prompt: Work on pull request #726 in credfeto/scripts. The repository is checked out at /workspace/repo. --- CHANGELOG.md | 1 + development/buildtest | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fc99444..21f55ea7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -54,6 +54,7 @@ Please ADD ALL Changes to the UNRELEASED SECTION and not a specific release - git/fetch and git/switchtomain now warn and skip a repo on error instead of aborting the whole run, so remaining repos still get processed. - development/buildtest now runs unit tests first, always excluding benchmark test projects, then runs any benchmark projects found individually without the --long-running/--parallel-algorithm flags, since some benchmark projects' test host rejects them as invalid arguments (exit code 5, zero tests ran) instead of running - development/buildtest: fixed the --no-benchmarks/--no-integration flag typos and the broken TEST_INTEGRATION filter assignment so --no-integration actually excludes integration tests +- development/buildtest: disable shell pathname expansion (set -f) around the dotnet test invocation using the unquoted TEST_INTEGRATION filter, so a *.Integration.Tests(.*) file in the solution directory can no longer glob-expand and corrupt the --no-integration filter arguments ### Changed - Replace raw echo with standard output helpers (die/info/success) in github/cancel-workflows - Replace raw echo with standard output helpers (die/info/success) in git/update-repos-personal diff --git a/development/buildtest b/development/buildtest index b738e2c7..f6c912db 100755 --- a/development/buildtest +++ b/development/buildtest @@ -171,6 +171,10 @@ info "Testing..." # credfeto/credfeto-global-pre-commit - that repo is the source of truth for # this design; this file is a local fork/vendored copy, not consumed # directly from there (see credfeto/scripts#679, credfeto/scripts#723). +# set -f disables pathname expansion for the unquoted $TEST_INTEGRATION below, +# so a *.Integration.Tests(.*) file sitting in $SOURCE_DIR can't get glob-expanded +# in place of the literal filter pattern; word splitting still applies. +set -f # shellcheck disable=SC2086 dotnet test \ --configuration Release \ @@ -191,6 +195,7 @@ dotnet test \ "-p:SuppressNETCoreSdkPreviewMessage=true" \ "-p:Version=0.0.0.1-test" \ || die "Tests Failed" +set +f if [ -z "$TEST_BENCHMARKS" ]; then BENCH_PROJECTS=$(find "$SOURCE_DIR" -type f -iname "*.csproj" -not -path "*/obj/*" -not -path "*/bin/*" | while IFS= read -r proj; do