From 189e39bcfc806f8af4a364bb121e0cfbee37b624 Mon Sep 17 00:00:00 2001 From: Philip <42116482+PhilipAbed@users.noreply.github.com> Date: Thu, 18 Aug 2022 20:08:51 +0300 Subject: [PATCH] fix(npm): issue with npm lerna deleting unrelated lockfile files (#17233) --- .../manager/npm/post-update/index.spec.ts | 23 +++++++++++++++++++ lib/modules/manager/npm/post-update/index.ts | 3 +++ 2 files changed, 26 insertions(+) diff --git a/lib/modules/manager/npm/post-update/index.spec.ts b/lib/modules/manager/npm/post-update/index.spec.ts index 19b2b2d4f1..4ac567e6e3 100644 --- a/lib/modules/manager/npm/post-update/index.spec.ts +++ b/lib/modules/manager/npm/post-update/index.spec.ts @@ -78,6 +78,16 @@ describe('modules/manager/npm/post-update/index', () => { npmLock: 'package-lock.json', rangeStrategy: 'widen', }, + { + depName: 'core-js', + isRemediation: true, + managerData: { + lernaJsonFile: 'lerna.json', + }, + npmLock: 'randomFolder/package-lock.json', + lockFiles: ['randomFolder/package-lock.json'], + rangeStrategy: 'pin', + }, { isLockfileUpdate: true, npmLock: 'package-lock.json', @@ -209,6 +219,19 @@ describe('modules/manager/npm/post-update/index', () => { ]); }); + it('works only on relevant folders', async () => { + git.getFile.mockResolvedValueOnce( + Fixtures.get('update-lockfile-massage-1/package-lock.json') + ); + await expect( + writeExistingFiles(updateConfig, additionalFiles) + ).resolves.toBeUndefined(); + + expect(fs.writeLocalFile).toHaveBeenCalledTimes(2); + expect(fs.deleteLocalFile).not.toHaveBeenCalled(); + expect(git.getFile).toHaveBeenCalledOnce(); + }); + it('has no npm files', async () => { await expect(writeExistingFiles(baseConfig, {})).toResolve(); }); diff --git a/lib/modules/manager/npm/post-update/index.ts b/lib/modules/manager/npm/post-update/index.ts index f1c8636996..0f15c4fc41 100644 --- a/lib/modules/manager/npm/post-update/index.ts +++ b/lib/modules/manager/npm/post-update/index.ts @@ -180,6 +180,9 @@ export async function writeExistingFiles( const widens: string[] = []; let lockFileChanged = false; for (const upgrade of config.upgrades) { + if (upgrade.lockFiles && !upgrade.lockFiles.includes(npmLock)) { + continue; + } if ( upgrade.rangeStrategy === 'widen' && upgrade.npmLock === npmLock -- GitLab