diff --git a/.github/workflows/test-coverage-report.yaml b/.github/workflows/test-coverage-report.yaml index 7cdc4b1c5..cebf7828c 100644 --- a/.github/workflows/test-coverage-report.yaml +++ b/.github/workflows/test-coverage-report.yaml @@ -57,9 +57,11 @@ jobs: just test-coverage coverage_target.out short # switch back to the head ref git checkout ${{ github.head_ref }} + ./tools/bin/cov_compare.sh --no-header coverage_target.out coverage.out > table.txt + cat table.txt { echo 'coverage_report<> "$GITHUB_ENV" - name: Remove previous coverage comments diff --git a/tools/bin/cov_compare.sh b/tools/bin/cov_compare.sh index 2aad6d2f6..842f6b355 100755 --- a/tools/bin/cov_compare.sh +++ b/tools/bin/cov_compare.sh @@ -8,7 +8,10 @@ # ./cov_compare.sh --no-header coverage.out coverage_new.out NO_HEADER=0 -ARGS="" + +# Collect non-flag arguments in an array so they remain separate when +# resetting positional parameters with `set --`. +ARGS=() # Parse optional flags for arg in "$@"; do @@ -17,13 +20,13 @@ for arg in "$@"; do NO_HEADER=1 ;; *) - ARGS="$ARGS $arg" + ARGS+=("$arg") ;; esac done # Reset positional parameters -set -- "$ARGS" +set -- "${ARGS[@]}" if [ "$#" -ne 2 ]; then echo "Usage: $0 [--no-header] coverage1.out coverage2.out" >&2