From a554e0d70015b9d5730c4725ac1682031e1dd96b Mon Sep 17 00:00:00 2001 From: Toby Bessant Date: Sun, 21 Apr 2024 16:27:37 +0100 Subject: [PATCH 1/3] Add blanket package exclusion --- .../resolveDependencies/resolveNpmDependencies.ts | 9 ++++++--- .../resolveDependencies/resolvePnpmDependencies.ts | 7 ++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolveNpmDependencies.ts b/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolveNpmDependencies.ts index d6252511..b0dc4cab 100644 --- a/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolveNpmDependencies.ts +++ b/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolveNpmDependencies.ts @@ -27,12 +27,15 @@ export const resolveDependenciesForNpmProject = async ( return; } - if (exclude.includes(node.pkgid)) { + const packageJson = await readPackageJson(join(node.realpath, "package.json")); + + if ( + exclude.includes(`${packageJson.name}@${packageJson.version}`) || + exclude.includes(`${packageJson.name}`) + ) { return; } - const packageJson = await readPackageJson(join(node.realpath, "package.json")); - const licenseContent = await resolveLicenseContent(node.realpath, packageJson, replacements); if (licenseContent) { diff --git a/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolvePnpmDependencies.ts b/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolvePnpmDependencies.ts index 265aa270..b7123d00 100644 --- a/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolvePnpmDependencies.ts +++ b/src/packages/generate-license-file/src/lib/internal/resolveDependencies/resolvePnpmDependencies.ts @@ -27,9 +27,10 @@ export const resolveDependenciesForPnpmProject = async ( for (const dependencyPath of dependency.paths) { const packageJson = await readPackageJson(join(dependencyPath, "package.json")); - const pkgId = `${packageJson.name}@${packageJson.version}`; - - if (exclude.includes(pkgId)) { + if ( + exclude.includes(`${packageJson.name}@${packageJson.version}`) || + exclude.includes(`${packageJson.name}`) + ) { continue; } From 47f0d81bd4786167bf9ab3a423140ade358f69e4 Mon Sep 17 00:00:00 2001 From: Toby Bessant Date: Sun, 21 Apr 2024 16:29:11 +0100 Subject: [PATCH 2/3] Add unit test --- .../resolveNpmDependencies.spec.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts b/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts index d3d48de3..8e988c26 100644 --- a/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts +++ b/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts @@ -316,6 +316,23 @@ describe("resolveNpmDependencies", () => { const child1_2LicenseContentMap = licensesMap.get(child1_2LicenseContent); expect(child1_2LicenseContentMap?.find(c => c.name === child1_2Name)).toBeDefined(); }); + + it("should not include the dependency in the result if specified by name only", async () => { + const licensesMap = new Map(); + + await resolveDependenciesForNpmProject("/some/path/package.json", licensesMap, { + exclude: [`${child1_1Name}`], + }); + + const child1LicenseContentMap = licensesMap.get(child1LicenseContent); + expect(child1LicenseContentMap?.find(c => c.name === child1Name)).toBeDefined(); + + const child1_1LicenseContentMap = licensesMap.get(child1_1LicenseContent); + expect(child1_1LicenseContentMap).toBeUndefined(); + + const child1_2LicenseContentMap = licensesMap.get(child1_2LicenseContent); + expect(child1_2LicenseContentMap?.find(c => c.name === child1_2Name)).toBeDefined(); + }); }); const setUpPackageJson = (directory: string, packageJson: PackageJson): void => { From 3fb25459fd9b6d1f4fc6ce097df65d84547f572d Mon Sep 17 00:00:00 2001 From: Toby Bessant Date: Sun, 21 Apr 2024 16:32:53 +0100 Subject: [PATCH 3/3] Fix unit test --- .../resolveNpmDependencies.spec.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts b/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts index 8e988c26..6a2a811a 100644 --- a/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts +++ b/src/packages/generate-license-file/test/internal/resolveDependencies/resolveNpmDependencies.spec.ts @@ -165,37 +165,37 @@ describe("resolveNpmDependencies", () => { when(mockedResolveLicenseContent) .calledWith(child1Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child1LicenseContent); - setUpPackageJson(child1Realpath, { name: child1Name, version: "1.0.0" }); + setUpPackageJson(child1Realpath, { name: child1Name, version: child1Version }); when(mockedResolveLicenseContent) .calledWith(child1_1Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child1_1LicenseContent); - setUpPackageJson(child1_1Realpath, { name: child1_1Name, version: "1.0.0" }); + setUpPackageJson(child1_1Realpath, { name: child1_1Name, version: child1_1Version }); when(mockedResolveLicenseContent) .calledWith(child1_2Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child1_2LicenseContent); - setUpPackageJson(child1_2Realpath, { name: child1_2Name, version: "1.0.0" }); + setUpPackageJson(child1_2Realpath, { name: child1_2Name, version: child1_2Version }); when(mockedResolveLicenseContent) .calledWith(child2Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child2LicenseContent); - setUpPackageJson(child2Realpath, { name: child2Name, version: "1.0.0" }); + setUpPackageJson(child2Realpath, { name: child2Name, version: child2Version }); when(mockedResolveLicenseContent) .calledWith(child2_1Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child2_1LicenseContent); - setUpPackageJson(child2_1Realpath, { name: child2_1Name, version: "1.0.0" }); + setUpPackageJson(child2_1Realpath, { name: child2_1Name, version: child2_1Version }); when(mockedResolveLicenseContent) .calledWith(child3Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child3LicenseContent); - setUpPackageJson(child3Realpath, { name: child3Name, version: "1.0.0" }); + setUpPackageJson(child3Realpath, { name: child3Name, version: child3Version }); when(mockedResolveLicenseContent) .calledWith(child3_1Realpath, expect.anything(), expect.anything()) .mockResolvedValue(child3_1LicenseContent); - setUpPackageJson(child3_1Realpath, { name: child3_1Name, version: "1.0.0" }); + setUpPackageJson(child3_1Realpath, { name: child3_1Name, version: child3_1Version }); }); afterAll(() => jest.restoreAllMocks());