Skip to content

run_lint_gates.sh reports a permanent false failure for gates whose args carry a ${{ }} expression #8929

Description

@proggeramlug

scripts/run_lint_gates.sh derives its command list from test.yml literally. #8928's step is backslash-continued:

python3 scripts/ci_cargo_test_shard.py --package perry \
  --total-shards "\${{ fromJSON(needs.plan.outputs.plan).cargo_test_perry.total }}" \
  --validate

Locally the expression is not substituted, so the gate runs with --total-shards "" and fails with invalid int value: ''. The gate itself is fine — --self-test passes and --validate exits 0 for every valid total (2, 4, 6).

Why it is worth fixing: the runner now reports 1 of 57 FAILED for everyone, permanently. A local gate runner that is always one-red trains people to skim past reds, which is precisely the habit this script exists to prevent — its own header documents two occasions where hand-picked gate runs let main go red.

Why the obvious fix does not work: the extractor emits only the first line of a multi-line run:, so the \${{ never appears in the extracted command and a filter on the extracted text cannot see it. The fix has to join backslash continuations first, then skip commands containing \${{ (naming them as skipped, not hiding them). That edit lives inside the script's quoted heredoc, which is easy to break — I tried and backed it out rather than ship something unverified.

Found while batch-merging #8926/#8927/#8928.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions