diff --git a/.changeset/clean-tigers-stalk.md b/.changeset/clean-tigers-stalk.md new file mode 100644 index 000000000..7d36c4f25 --- /dev/null +++ b/.changeset/clean-tigers-stalk.md @@ -0,0 +1,5 @@ +--- +"@scaleway/changesets-renovate": minor +--- + +filter out private packages from being published diff --git a/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts b/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts index ef19e1f0e..55bce72c3 100644 --- a/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts +++ b/packages/changesets-renovate/src/__tests__/generate-changeset.test.ts @@ -451,4 +451,91 @@ describe('generate changeset file', () => { expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') }) + + it('should ignore private packages', async () => { + const file = 'test/package.json' + + mockSimpleGit.mockReturnValue({ + ...defaultGitValues, + branch: () => ({ + current: 'renovate/test', + }), + diffSummary: () => ({ + files: [ + { + file, + }, + ], + }), + show: () => ` ++ "package": "version" ++ "package2": "version2" +`, + }) + + fs.readFile = vi + .fn() + .mockResolvedValueOnce(`{}`) + .mockResolvedValueOnce(`{"name":"packageName","version":"1.0.0","private":true}`) + fs.writeFile = vi.fn() + + await run() + + expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') + expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') + }) + + it('should include only non-private packages in changeset', async () => { + const rev = 'test' + const fileName = `.changeset/renovate-${rev}.md` + const privateFile = 'private/package.json' + const publicFile = 'public/package.json' + const revparse = vi.fn().mockReturnValue(rev) + const add = vi.fn() + const commit = vi.fn() + const push = vi.fn() + + mockSimpleGit.mockReturnValue({ + branch: () => ({ + current: 'renovate/test', + }), + diffSummary: () => ({ + files: [ + { + file: privateFile, + }, + { + file: publicFile, + }, + ], + }), + show: () => ` ++ "package": "version" ++ "package2": "version2" +`, + revparse, + add, + commit, + push, + }) + + fs.readFile = vi + .fn() + .mockResolvedValueOnce(`{}`) + .mockResolvedValueOnce(`{"name":"privatePackage","version":"1.0.0","private":true}`) + .mockResolvedValueOnce(`{"name":"publicPackage","version":"1.0.0"}`) + fs.writeFile = vi.fn() + + await run() + + expect(fs.readFile).toHaveBeenCalledWith(privateFile, 'utf8') + expect(fs.readFile).toHaveBeenCalledWith(publicFile, 'utf8') + expect(fs.writeFile).toHaveBeenCalled() + // Only the public package should be included in the changeset + expect(fs.writeFile.mock.calls[0][1]).toContain("'publicPackage': patch") + expect(fs.writeFile.mock.calls[0][1]).not.toContain("'privatePackage': patch") + expect(add).toHaveBeenCalledWith(fileName) + expect(commit).toHaveBeenCalledWith(`chore: add changeset renovate-${rev}`) + expect(push).toHaveBeenCalledTimes(1) + }) }) diff --git a/packages/changesets-renovate/src/index.ts b/packages/changesets-renovate/src/index.ts index 98eaa670e..570523928 100644 --- a/packages/changesets-renovate/src/index.ts +++ b/packages/changesets-renovate/src/index.ts @@ -37,6 +37,11 @@ async function getPackagesNames(files: string[]): Promise { name: string workspaces?: string[] version?: string + private?: boolean + } + + if (data.private) { + return } if (shouldIgnorePackage(data.name, ignoredPackages)) { @@ -54,6 +59,7 @@ async function getPackagesNames(files: string[]): Promise { return packages } + async function createChangeset( fileName: string, packageBumps: Map,