test(FN-000): include reverse dependents in changed tests
This commit is contained in:
@@ -230,6 +230,23 @@ test("decideExecutionPlan: only package files changed → changed mode", () => {
|
||||
assert.deepEqual(plan.packages, ["@fusion/engine"]);
|
||||
});
|
||||
|
||||
test("decideExecutionPlan: expands changed packages with reverse dependents", () => {
|
||||
const plan = decideExecutionPlan({
|
||||
forceFullSuite: false,
|
||||
comparisonBase: "abc123",
|
||||
changedFiles: ["packages/core/src/store.ts"],
|
||||
packageNameByDir: basePackageMap,
|
||||
reverseDependencyMap: new Map([
|
||||
["@fusion/core", ["@fusion/engine"]],
|
||||
["@fusion/engine", ["@fusion/dashboard"]],
|
||||
["@fusion/dashboard", []],
|
||||
]),
|
||||
});
|
||||
|
||||
assert.equal(plan.mode, "changed");
|
||||
assert.deepEqual(plan.packages, ["@fusion/core", "@fusion/engine", "@fusion/dashboard"]);
|
||||
});
|
||||
|
||||
test("decideExecutionPlan: no affected package resolved → full", () => {
|
||||
const plan = decideExecutionPlan({
|
||||
forceFullSuite: false,
|
||||
|
||||
@@ -680,6 +680,7 @@ export function decideExecutionPlan({
|
||||
comparisonBase,
|
||||
changedFiles,
|
||||
packageNameByDir,
|
||||
reverseDependencyMap,
|
||||
}) {
|
||||
if (forceFullSuite) return { mode: "full", reason: "forced" };
|
||||
if (!comparisonBase) return { mode: "full", reason: "missing-comparison-base" };
|
||||
@@ -690,7 +691,12 @@ export function decideExecutionPlan({
|
||||
const affectedPackages = resolveAffectedPackages(changedFiles, packageNameByDir);
|
||||
if (!affectedPackages || affectedPackages.length === 0) return { mode: "full", reason: "no-affected-package" };
|
||||
|
||||
return { mode: "changed", packages: affectedPackages };
|
||||
return {
|
||||
mode: "changed",
|
||||
packages: reverseDependencyMap
|
||||
? expandWithReverseDependents(affectedPackages, reverseDependencyMap)
|
||||
: affectedPackages,
|
||||
};
|
||||
}
|
||||
|
||||
export function main(argv = process.argv.slice(2)) {
|
||||
@@ -722,12 +728,14 @@ export function main(argv = process.argv.slice(2)) {
|
||||
const workspacePackages = listWorkspacePackageInfos();
|
||||
const packageNameByDir = listWorkspacePackages(workspacePackages);
|
||||
const packageDirByName = buildPackageDirByName(workspacePackages);
|
||||
const reverseDependencyMap = buildReverseDependencyMap(workspacePackages);
|
||||
|
||||
const plan = decideExecutionPlan({
|
||||
forceFullSuite,
|
||||
comparisonBase,
|
||||
changedFiles,
|
||||
packageNameByDir,
|
||||
reverseDependencyMap,
|
||||
});
|
||||
|
||||
if (plan.mode === "full") {
|
||||
|
||||
Reference in New Issue
Block a user