diff --git a/lib/workers/repository/init/merge.spec.ts b/lib/workers/repository/init/merge.spec.ts index 2fb761c2b186ef2b0bae561b96e715e9720e0eff..937ef640628ec31047ddfeaccc14ef0829487a76 100644 --- a/lib/workers/repository/init/merge.spec.ts +++ b/lib/workers/repository/init/merge.spec.ts @@ -58,6 +58,25 @@ describe('workers/repository/init/merge', () => { expect(await detectRepoFileConfig()).toMatchSnapshot(); expect(await detectRepoFileConfig()).toMatchSnapshot(); }); + it('massages package.json renovate string', async () => { + git.getFileList.mockResolvedValue(['package.json']); + const pJson = JSON.stringify({ + name: 'something', + renovate: 'github>renovatebot/renovate', + }); + fs.readLocalFile.mockResolvedValue(pJson); + platform.getJsonFile.mockResolvedValueOnce(pJson); + expect(await detectRepoFileConfig()).toMatchInlineSnapshot(` + Object { + "configFileName": "package.json", + "configFileParsed": Object { + "extends": Array [ + "github>renovatebot/renovate", + ], + }, + } + `); + }); it('returns error if cannot parse', async () => { git.getFileList.mockResolvedValue(['package.json', 'renovate.json']); fs.readLocalFile.mockResolvedValue('cannot parse'); diff --git a/lib/workers/repository/init/merge.ts b/lib/workers/repository/init/merge.ts index 9d8d0d24300687407b25c3a35cc2c53f4487ad9b..a352e31bd14b5570abaad022524ceb90a8e2b88e 100644 --- a/lib/workers/repository/init/merge.ts +++ b/lib/workers/repository/init/merge.ts @@ -68,6 +68,10 @@ export async function detectRepoFileConfig(): Promise<RepoFileConfig> { configFileParsed = JSON.parse( await readLocalFile('package.json', 'utf8') ).renovate; + if (is.string(configFileParsed)) { + logger.debug('Massaging string renovate config to extends array'); + configFileParsed = { extends: [configFileParsed] }; + } logger.debug({ config: configFileParsed }, 'package.json>renovate config'); } else { let rawFileContents = await readLocalFile(configFileName, 'utf8');