Fix test status stamping

---
Build: pass | Tests: pass — 2380 passed (175 files)
This commit is contained in:
Operator & Codex 2026-05-11 08:35:35 +02:00
parent b5a5da723a
commit 17746bb98b
4 changed files with 35 additions and 4 deletions

View file

@ -55,6 +55,19 @@ FOOTER=$(node -e '
process.stdout.write(footer);
' "$BUILD_PATH" "$TEST_PATH")
node -e '
const fs = require("fs");
const file = process.argv[1];
let text = fs.readFileSync(file, "utf8");
const footerRe = /\s*\n---\n(?:\s*\n)*(?:Build:[^\n]*(?:\n(?:\s*\n)*Tests:[^\n]*)?|Tests:[^\n]*)(?:\s*\n)*$/u;
let previous;
do {
previous = text;
text = text.replace(footerRe, "");
} while (text !== previous);
fs.writeFileSync(file, text.trimEnd() + "\n");
' "$COMMIT_MSG_FILE"
{
printf '\n---\n'
printf '%s\n' "$FOOTER"

View file

@ -119,10 +119,11 @@ export function isKnowledgeSource(file) {
export function collectChangedFiles(options) {
const files = new Set();
const diffFilter = '--diff-filter=ACMRTUXBD';
const listGitLines = options.gitLines ?? gitLines;
if (options.base) {
if (refExists(options.base)) {
for (const file of gitLines(['diff', '--name-only', diffFilter, `${options.base}...HEAD`])) {
for (const file of listGitLines(['diff', '--name-only', diffFilter, `${options.base}...HEAD`])) {
files.add(file);
}
} else {
@ -131,10 +132,10 @@ export function collectChangedFiles(options) {
}
if (!options.committedOnly) {
for (const file of gitLines(['diff', '--name-only', diffFilter, 'HEAD'])) {
for (const file of listGitLines(['diff', '--name-only', diffFilter, 'HEAD'])) {
files.add(file);
}
for (const file of gitLines(['ls-files', '--others', '--exclude-standard'])) {
for (const file of listGitLines(['ls-files', '--others', '--exclude-standard'])) {
files.add(file);
}
}

View file

@ -98,7 +98,7 @@ run_tests() {
let parsed;
try { parsed = JSON.parse(raw); } catch { process.stdout.write("{}"); process.exit(0); }
const total = parsed.numTotalTests ?? 0;
const totalFiles = parsed.numTotalTestSuites ?? parsed.testResults?.length ?? 0;
const totalFiles = parsed.testResults?.length ?? parsed.numTotalTestSuites ?? 0;
const failing = parsed.numFailedTests ?? 0;
const skipped = parsed.numPendingTests ?? 0;
const failingNames = [];

View file

@ -29,6 +29,7 @@ describe('isKnowledgeSource', () => {
describe('collectChangedFiles', () => {
it('includes deleted knowledge-source files from the working tree diff', () => {
const gitCalls: string[][] = [];
const changedFiles = collectChangedFiles({
base: undefined,
artifactVersion: undefined,
@ -38,8 +39,24 @@ describe('collectChangedFiles', () => {
skipBudgetCheck: false,
skipOnMissingKey: false,
minRemainingUsd: 0.25,
gitLines: (args: string[]) => {
gitCalls.push(args);
if (args[0] === 'diff') {
return [
'.agent/skills/get-qodo-rules/SKILL.md',
'.agent/skills/qodo-pr-resolver/SKILL.md',
];
}
return [];
},
});
expect(gitCalls).toContainEqual([
'diff',
'--name-only',
'--diff-filter=ACMRTUXBD',
'HEAD',
]);
expect(changedFiles).toContain('.agent/skills/get-qodo-rules/SKILL.md');
expect(changedFiles).toContain('.agent/skills/qodo-pr-resolver/SKILL.md');
});