diff --git a/.changeset/moody-bears-hang.md b/.changeset/moody-bears-hang.md new file mode 100644 index 000000000..c1b760d99 --- /dev/null +++ b/.changeset/moody-bears-hang.md @@ -0,0 +1,5 @@ +--- +'@scaleway/changesets-renovate': patch +--- + +Do not generate changeset for `package.json` without `version` field diff --git a/packages/changesets-renovate/src/__tests__/generate-changeset.ts b/packages/changesets-renovate/src/__tests__/generate-changeset.ts index 14be3869d..5462fce1f 100644 --- a/packages/changesets-renovate/src/__tests__/generate-changeset.ts +++ b/packages/changesets-renovate/src/__tests__/generate-changeset.ts @@ -102,7 +102,9 @@ describe('generate changeset file', () => { push, }) - fs.readFile = jest.fn().mockResolvedValue(`{"name":"packageName"}`) + fs.readFile = jest + .fn() + .mockResolvedValue(`{"name":"packageName","version":"1.0.0"}`) fs.writeFile = jest.fn() await run() @@ -146,4 +148,35 @@ describe('generate changeset file', () => { expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') }) + + it('should ignore version package.json', async () => { + const file = 'package.json' + + // @ts-expect-error we mock at the top + // eslint-disable-next-line @typescript-eslint/no-unsafe-call + simpleGit.mockReturnValue({ + branch: () => ({ + current: 'renovate/test', + }), + diffSummary: () => ({ + files: [ + { + file, + }, + ], + }), + show: () => ` ++ "package": "version" ++ "package2": "version2" +`, + }) + + fs.readFile = jest.fn().mockResolvedValue(`{"name":"packageName"}`) + fs.writeFile = jest.fn() + + await run() + + expect(fs.readFile).toHaveBeenCalledWith(file, 'utf8') + expect(console.log).toHaveBeenCalledWith('No packages modified, skipping') + }) }) diff --git a/packages/changesets-renovate/src/index.ts b/packages/changesets-renovate/src/index.ts index a56eef850..cc040986d 100644 --- a/packages/changesets-renovate/src/index.ts +++ b/packages/changesets-renovate/src/index.ts @@ -10,9 +10,11 @@ async function getPackagesNames(files: string[]): Promise { const data = JSON.parse(await fs.readFile(file, 'utf8')) as { name: string workspaces?: string[] + version?: string } - if (!data.workspaces) { + // Do not generate changeset for the root package.json of a monorepo + if (!data.workspaces && data.version) { packages.push(data.name) } })