mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-27 20:16:53 +02:00
fix(deps): keep plugin ownership records live (#71331)
This commit is contained in:
@@ -184,13 +184,17 @@ export function collectSbomRiskReport(params = {}) {
|
||||
return left.importer.localeCompare(right.importer);
|
||||
});
|
||||
|
||||
const rootDependencyNames = new Set(rootDependencies.map((dependency) => dependency.name));
|
||||
const workspaceDependencyNames = new Set(
|
||||
Object.values(lockfile.importers ?? {}).flatMap((record) =>
|
||||
normalizeDependencies(record).map((dependency) => dependency.name),
|
||||
),
|
||||
);
|
||||
const ownershipGaps = rootDependencies
|
||||
.filter((dependency) => !ownershipFor(dependencyOwnership, dependency.name))
|
||||
.map((dependency) => dependency.name)
|
||||
.toSorted(compareStrings);
|
||||
const staleOwnershipRecords = Object.keys(dependencyOwnership.dependencies ?? {})
|
||||
.filter((name) => !rootDependencyNames.has(name))
|
||||
.filter((name) => !workspaceDependencyNames.has(name))
|
||||
.toSorted(compareStrings);
|
||||
const ownershipWarnings = rootDependencyRows
|
||||
.filter(
|
||||
|
||||
@@ -118,4 +118,62 @@ snapshots:
|
||||
"root dependency 'missing-owner' is missing from scripts/lib/dependency-ownership.json",
|
||||
]);
|
||||
});
|
||||
|
||||
it("does not mark plugin importer dependencies as stale ownership records", () => {
|
||||
const repoRoot = makeTempRepo();
|
||||
writeRepoFile(
|
||||
repoRoot,
|
||||
"package.json",
|
||||
JSON.stringify({
|
||||
dependencies: {
|
||||
"core-lib": "1.0.0",
|
||||
},
|
||||
}),
|
||||
);
|
||||
writeRepoFile(
|
||||
repoRoot,
|
||||
"pnpm-lock.yaml",
|
||||
`
|
||||
lockfileVersion: '9.0'
|
||||
importers:
|
||||
.:
|
||||
dependencies:
|
||||
core-lib:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
extensions/web-readability:
|
||||
dependencies:
|
||||
plugin-readable:
|
||||
specifier: 2.0.0
|
||||
version: 2.0.0
|
||||
packages:
|
||||
core-lib@1.0.0: {}
|
||||
plugin-readable@2.0.0: {}
|
||||
snapshots:
|
||||
core-lib@1.0.0: {}
|
||||
plugin-readable@2.0.0: {}
|
||||
`,
|
||||
);
|
||||
writeRepoFile(
|
||||
repoRoot,
|
||||
"scripts/lib/dependency-ownership.json",
|
||||
JSON.stringify({
|
||||
schemaVersion: 1,
|
||||
dependencies: {
|
||||
"core-lib": { owner: "core:test", class: "core-runtime", risk: ["network"] },
|
||||
"plugin-readable": {
|
||||
owner: "plugin:web-readability",
|
||||
class: "plugin-runtime",
|
||||
risk: ["html"],
|
||||
},
|
||||
"removed-lib": { owner: "core:test", class: "core-runtime", risk: ["unused"] },
|
||||
},
|
||||
}),
|
||||
);
|
||||
|
||||
const report = collectSbomRiskReport({ repoRoot });
|
||||
|
||||
expect(report.ownershipGaps).toEqual([]);
|
||||
expect(report.staleOwnershipRecords).toEqual(["removed-lib"]);
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user