From ac613076047c9ffed2eba5a29c8747be9d9c7e80 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Sun, 30 May 2021 06:01:24 +0200 Subject: [PATCH] fix(config): don't treat package.json like a config object (#10231) Closes #10230 --- .../repository/init/__snapshots__/merge.spec.ts.snap | 7 +++++++ lib/workers/repository/init/merge.spec.ts | 2 ++ lib/workers/repository/init/merge.ts | 6 ++++-- lib/workers/repository/onboarding/branch/check.ts | 9 +++++++-- lib/workers/repository/onboarding/branch/index.spec.ts | 8 ++++++++ 5 files changed, 28 insertions(+), 4 deletions(-) diff --git a/lib/workers/repository/init/__snapshots__/merge.spec.ts.snap b/lib/workers/repository/init/__snapshots__/merge.spec.ts.snap index 42481bc0f3..2271e01caa 100644 --- a/lib/workers/repository/init/__snapshots__/merge.spec.ts.snap +++ b/lib/workers/repository/init/__snapshots__/merge.spec.ts.snap @@ -66,4 +66,11 @@ Object { } `; +exports[`workers/repository/init/merge detectRepoFileConfig() uses package.json config if found 2`] = ` +Object { + "configFileName": "package.json", + "configFileParsed": undefined, +} +`; + exports[`workers/repository/init/merge mergeRenovateConfig() throws error if misconfigured 1`] = `[Error: config-validation]`; diff --git a/lib/workers/repository/init/merge.spec.ts b/lib/workers/repository/init/merge.spec.ts index b5e620a136..cf508943c1 100644 --- a/lib/workers/repository/init/merge.spec.ts +++ b/lib/workers/repository/init/merge.spec.ts @@ -53,6 +53,8 @@ describe(getName(), () => { }, }); fs.readLocalFile.mockResolvedValue(pJson); + platform.getJsonFile.mockResolvedValueOnce(pJson); + expect(await detectRepoFileConfig()).toMatchSnapshot(); expect(await detectRepoFileConfig()).toMatchSnapshot(); }); it('returns error if cannot parse', async () => { diff --git a/lib/workers/repository/init/merge.ts b/lib/workers/repository/init/merge.ts index 79d029c8b1..aee5befe6b 100644 --- a/lib/workers/repository/init/merge.ts +++ b/lib/workers/repository/init/merge.ts @@ -26,9 +26,11 @@ export async function detectRepoFileConfig(): Promise<RepoFileConfig> { const cache = getCache(); let { configFileName } = cache; if (configFileName) { - const configFileParsed = await platform.getJsonFile(configFileName); + let configFileParsed = await platform.getJsonFile(configFileName); if (configFileParsed) { - logger.debug('Existing config file confirmed'); + if (configFileName === 'package.json') { + configFileParsed = configFileParsed.renovate; + } return { configFileName, configFileParsed }; } logger.debug('Existing config file no longer exists'); diff --git a/lib/workers/repository/onboarding/branch/check.ts b/lib/workers/repository/onboarding/branch/check.ts index 475f1e9bc9..1c1e2062e1 100644 --- a/lib/workers/repository/onboarding/branch/check.ts +++ b/lib/workers/repository/onboarding/branch/check.ts @@ -66,8 +66,13 @@ export const isOnboarded = async (config: RenovateConfig): Promise<boolean> => { cache.configFileName ); if (configFileContent) { - logger.debug('Existing config file confirmed'); - return true; + if ( + cache.configFileName !== 'package.json' || + configFileContent.renovate + ) { + logger.debug('Existing config file confirmed'); + return true; + } } } catch (err) { // probably file doesn't exist diff --git a/lib/workers/repository/onboarding/branch/index.spec.ts b/lib/workers/repository/onboarding/branch/index.spec.ts index b7faee9dd8..43c2991ceb 100644 --- a/lib/workers/repository/onboarding/branch/index.spec.ts +++ b/lib/workers/repository/onboarding/branch/index.spec.ts @@ -131,6 +131,14 @@ describe(getName(), () => { expect(res.repoIsOnboarded).toBe(true); }); + it('handles cached package.json', async () => { + cache.getCache.mockReturnValue({ configFileName: 'package.json' }); + platform.getJsonFile.mockResolvedValueOnce({ renovate: {} }); + fs.readLocalFile.mockResolvedValueOnce('{}'); + const res = await checkOnboardingBranch(config); + expect(res.repoIsOnboarded).toBe(true); + }); + it('detects repo is onboarded via package.json config', async () => { git.getFileList.mockResolvedValueOnce(['package.json']); fs.readLocalFile.mockResolvedValueOnce('{"renovate":{}}'); -- GitLab