Files
fusion/scripts/__tests__/audit-branch-cross-contamination.test.mjs
Fusion 9f26f83b04 fix(FN-4409): add merge-base fallback for contamination audit
Fusion-Task-Id: FN-4409
Fusion-Task-Lineage: c608c942-fec7-4489-9970-b8dc314f8be2
2026-05-13 17:44:46 -07:00

47 lines
2.1 KiB
JavaScript

import test from "node:test";
import assert from "node:assert/strict";
import fs from "node:fs";
import os from "node:os";
import path from "node:path";
import { execFileSync } from "node:child_process";
import { auditBranchCrossContamination } from "../audit-branch-cross-contamination.mjs";
function run(cwd, cmd, args) {
return execFileSync(cmd, args, { cwd, encoding: "utf8", stdio: ["ignore", "pipe", "pipe"] }).trim();
}
test("flags branch as tainted when foreign task commits are present", () => {
const dir = fs.mkdtempSync(path.join(os.tmpdir(), "fn-4409-audit-"));
try {
run(dir, "git", ["init", "-b", "main"]);
run(dir, "git", ["config", "user.name", "Fusion"]);
run(dir, "git", ["config", "user.email", "noreply@runfusion.ai"]);
fs.writeFileSync(path.join(dir, "README.md"), "base\n");
run(dir, "git", ["add", "README.md"]);
run(dir, "git", ["commit", "-m", "chore: base"]);
run(dir, "git", ["checkout", "-b", "fusion/fn-0001"]);
fs.writeFileSync(path.join(dir, "feature.txt"), "foreign\n");
run(dir, "git", ["add", "feature.txt"]);
run(dir, "git", ["commit", "-m", "feat(FN-0002): foreign work", "-m", "Fusion-Task-Id: FN-0002"]);
const fusionDir = path.join(dir, ".fusion");
fs.mkdirSync(fusionDir, { recursive: true });
const dbPath = path.join(fusionDir, "fusion.db");
run(dir, "sqlite3", [dbPath, `CREATE TABLE tasks (id TEXT PRIMARY KEY, title TEXT, branch TEXT, baseCommitSha TEXT, "column" TEXT);`]);
run(dir, "sqlite3", [dbPath, `INSERT INTO tasks (id, title, branch, baseCommitSha, "column") VALUES ('FN-0001', 'Task 1', 'fusion/fn-0001', NULL, 'in-progress');`]);
const report = auditBranchCrossContamination({ projectRoot: dir });
assert.equal(report.taintedTaskCount, 1);
const task = report.tasks.find((entry) => entry.taskId === "FN-0001");
assert.ok(task);
assert.equal(task.tainted, true);
assert.equal(task.recommendation, "force-reset");
assert.equal(task.baseResolutionSource.startsWith("merge-base("), true);
assert.equal(task.taintedCommits[0].foreignTaskId, "FN-0002");
} finally {
fs.rmSync(dir, { recursive: true, force: true });
}
});