diff --git a/lib/workers/repository/init/__snapshots__/merge.spec.ts.snap b/lib/workers/repository/init/__snapshots__/merge.spec.ts.snap index 42481bc0f3856f786522d97fdfbdad55590180f7..2271e01caa04df516b211b7a6af80576408a3ca3 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 b5e620a136e78eac71e5c095bef34d0103ba6a10..cf508943c1f8a4e50b3302c94ad0a6b117013a34 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 79d029c8b17ef4acb1517ce1e968e553708647bd..aee5befe6b0a09c30de672abb5ea1fc82e257195 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 475f1e9bc9ade876c1151d92ff6dcfe15afaa4b8..1c1e2062e1580b7257655020c9850fe923956ecf 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 b7faee9dd8420ab0213301bca680c1c4f649a393..43c2991cebd22c95945ae5f682c8e5b1ad1c19bc 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":{}}');