75 lines
2.3 KiB
JavaScript
75 lines
2.3 KiB
JavaScript
const assert = require("assert");
|
|
const path = require("path");
|
|
|
|
const mergeBatch = require(path.join(__dirname, "..", "merge_batch.cjs"));
|
|
|
|
function makeCheckRun(name, status, conclusion, startedAt, id) {
|
|
return {
|
|
name,
|
|
status,
|
|
conclusion,
|
|
started_at: startedAt,
|
|
completed_at: startedAt,
|
|
created_at: startedAt,
|
|
id,
|
|
};
|
|
}
|
|
|
|
{
|
|
const parsed = mergeBatch.parsePrList("450, 449 446");
|
|
assert.deepStrictEqual(parsed, [450, 449, 446]);
|
|
}
|
|
|
|
{
|
|
const summary = mergeBatch.extractSummaryBlock(`Summary line 1\nSummary line 2\n\n## Change Classification\n- [ ] Skill PR`);
|
|
assert.strictEqual(summary, "Summary line 1\nSummary line 2");
|
|
}
|
|
|
|
{
|
|
const template = `# Pull Request Description\n\nIntro\n\n## Change Classification\n- [ ] Skill PR\n\n## Quality Bar Checklist ✅\n- [ ] Standards`;
|
|
const body = mergeBatch.normalizePrBody(
|
|
`Short summary\n\n## Change Classification\n- [ ] Old item`,
|
|
template,
|
|
);
|
|
|
|
assert.ok(body.startsWith("Short summary"));
|
|
assert.ok(body.includes("## Change Classification"));
|
|
assert.ok(body.includes("## Quality Bar Checklist ✅"));
|
|
assert.ok(!body.includes("Old item"));
|
|
}
|
|
|
|
{
|
|
const aliases = mergeBatch.getRequiredCheckAliases({ hasSkillChanges: true });
|
|
assert.ok(aliases.some((entry) => Array.isArray(entry) && entry.includes("review")));
|
|
assert.ok(aliases.some((entry) => Array.isArray(entry) && entry.includes("pr-policy")));
|
|
}
|
|
|
|
{
|
|
const runs = [
|
|
makeCheckRun("pr-policy", "completed", "failure", "2026-04-01T10:00:00Z", 1),
|
|
makeCheckRun("pr-policy", "completed", "success", "2026-04-01T10:10:00Z", 2),
|
|
makeCheckRun("source-validation", "in_progress", null, "2026-04-01T10:11:00Z", 3),
|
|
makeCheckRun("review", "completed", "success", "2026-04-01T10:12:00Z", 4),
|
|
];
|
|
const summaries = mergeBatch.summarizeRequiredCheckRuns(runs, [
|
|
["pr-policy"],
|
|
["source-validation"],
|
|
["review", "Skill Review & Optimize"],
|
|
]);
|
|
|
|
assert.deepStrictEqual(
|
|
summaries.map((entry) => entry.state),
|
|
["success", "pending", "success"],
|
|
);
|
|
|
|
const latest = mergeBatch.selectLatestCheckRuns(runs);
|
|
assert.strictEqual(latest.get("pr-policy").conclusion, "success");
|
|
}
|
|
|
|
{
|
|
assert.strictEqual(mergeBatch.isRetryableMergeError(new Error("Base branch was modified")), true);
|
|
assert.strictEqual(mergeBatch.isRetryableMergeError(new Error("Something else")), false);
|
|
}
|
|
|
|
console.log("ok");
|