Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/scripts/qwen-triage-workflow.test.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -1014,9 +1014,14 @@ describe('qwen-triage: flakiness gate (#9125)', () => {
// executes, so it is a changed test file exactly like M.
assert.match(
recordStep.run,
/^\s*git -c core\.quotePath=false diff -z --name-only --diff-filter=ACMRT 'HEAD\^1' HEAD \\\n\s*> "\$GATE_HOME\/files-all"$/m,
/^\s*git -c core\.quotePath=false diff -z --name-only --diff-filter=ACMRT "\$BASE_OID" HEAD \\\n\s*> "\$GATE_HOME\/files-all"$/m,
'the NUL diff must flow straight into its file — $( ) strips NUL bytes, a pipeline swallows the exit status',
);
assert.match(
recordStep.run,
/^\s*BASE_OID="\$\(cat "\$\{RUNNER_TEMP:\?\}\/verify-base-oid"\)"$/m,
'the record step must diff against the base OID captured while .git was root-owned, not re-resolve HEAD^1',
);
assert.ok(
recordStep.run.includes(
"grep -zE '\\.(test|spec)\\.(ts|tsx|js|jsx|mjs|cjs|mts|cts)$'",
Expand Down
15 changes: 14 additions & 1 deletion .github/workflows/qwen-triage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2975,7 +2975,20 @@ jobs:
# T (typechange) included: a symlink->regular flip changes what
# the runner executes, so it is a changed test file exactly
# like M — excluding it silently drops the file from the gate.
git -c core.quotePath=false diff -z --name-only --diff-filter=ACMRT 'HEAD^1' HEAD \
# Diff against the base OID the "Pin agent inputs" step recorded
# while .git was still root-owned, never `HEAD^1` again: this
# step runs in the env -i scrubbed child, and resolving the `^1`
# parent there intermittently fails with "Could not access
# 'HEAD^1'" on the persistent pool — the shallow merge-ref object
# store is left in a state prior --depth=2 fetches made
# unreadable. The OID is content-addressed and needs no parent
# walk, so the diff works from the already-captured value.
BASE_OID="$(cat "${RUNNER_TEMP:?}/verify-base-oid")"
case "$BASE_OID" in
[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]*) ;;
*) echo "::error::No trusted base OID recorded; refusing to record the flakiness-gate file list."; exit 1 ;;
esac
git -c core.quotePath=false diff -z --name-only --diff-filter=ACMRT "$BASE_OID" HEAD \
> "$GATE_HOME/files-all"
# .mts/.cts included: vitest's default include set collects them.
# Only a no-match (status 1) may yield an empty list: a grep
Expand Down
Loading