diff --git a/lib/workers/repository/index.js b/lib/workers/repository/index.js index 699b1feda3f6a344b0a93a7ebd2da8af0f289866..a1c840fe566c04880aa6ebf26a73643bf29e50e8 100644 --- a/lib/workers/repository/index.js +++ b/lib/workers/repository/index.js @@ -84,7 +84,7 @@ async function renovateRepository(repoConfig, token) { logger.trace({ config }, 'post-packageFiles config'); // TODO: why is this fix needed?! config.logger = logger; - config.repoIsOnboarded = await onboarding.getOnboardingStatus(config); + config = await onboarding.getOnboardingStatus(config); if (!config.repoIsOnboarded) { config.contentBaseBranch = `${config.branchPrefix}configure`; // Remove packageFile list in case they are provisioned in renovate.json diff --git a/lib/workers/repository/onboarding.js b/lib/workers/repository/onboarding.js index b325586e65b98dc1d382c4be78f55ec78965c698..2d034e6d5ada686fab11ad1c2e87b5c7e8c3ef54 100644 --- a/lib/workers/repository/onboarding.js +++ b/lib/workers/repository/onboarding.js @@ -228,17 +228,18 @@ With your current configuration, renovate will initially create the following Pu logger.debug(`Created ${pr.displayNumber} for configuration`); } -async function getOnboardingStatus(config) { +async function getOnboardingStatus(inputConfig) { + const config = { ...inputConfig }; const { logger } = config; logger.debug('Checking if repo is configured'); // Check if repository is configured if (config.onboarding === false) { logger.debug('Repo onboarding is disabled'); - return true; + return { ...config, repoIsOnboarded: true }; } if (config.renovateJsonPresent || config.hasPackageJsonRenovateConfig) { logger.debug('Repo has been configured'); - return true; + return { ...config, repoIsOnboarded: true }; } const pr = await config.api.findPr( `${config.branchPrefix}configure`, @@ -248,7 +249,7 @@ async function getOnboardingStatus(config) { logger.debug(`Found existing onboarding PR#${pr.number}`); if (pr.isClosed) { logger.debug('Found closed Configure Renovate PR'); - return true; + return { ...config, repoIsOnboarded: true }; } // PR exists but hasn't been closed yet logger.debug( @@ -257,10 +258,10 @@ async function getOnboardingStatus(config) { const prDetails = await config.api.getPr(pr.number); if (!prDetails.canRebase) { // Cannot update files if rebasing not possible - return false; + return { ...config, repoIsOnboarded: false }; } } // Create or update files, then return await module.exports.createBranch(config); - return false; + return { ...config, repoIsOnboarded: false }; } diff --git a/test/workers/repository/index.spec.js b/test/workers/repository/index.spec.js index f653f35bd7221be6ea600661beda4e65adfca91d..3edb86e43ffd4847889c81098153a94c1ca53a95 100644 --- a/test/workers/repository/index.spec.js +++ b/test/workers/repository/index.spec.js @@ -48,7 +48,7 @@ describe('workers/repository', () => { apis.detectPackageFiles = jest.fn(); apis.resolvePackageFiles = jest.fn(input => input); apis.checkMonorepos = jest.fn(input => input); - onboarding.getOnboardingStatus = jest.fn(); + onboarding.getOnboardingStatus = jest.fn(input => input); onboarding.ensurePr = jest.fn(); upgrades.determineRepoUpgrades = jest.fn(() => []); upgrades.branchifyUpgrades = jest.fn(() => ({ branchUpgrades: {} })); @@ -177,7 +177,10 @@ describe('workers/repository', () => { it('calls branchWorker', async () => { config.packageFiles = ['package.json']; config.hasRenovateJson = true; - onboarding.getOnboardingStatus.mockReturnValueOnce(true); + onboarding.getOnboardingStatus.mockImplementation(input => ({ + ...input, + repoIsOnboarded: true, + })); upgrades.branchifyUpgrades.mockReturnValueOnce({ upgrades: [{}, {}, {}], }); @@ -188,7 +191,10 @@ describe('workers/repository', () => { it('skips branchWorker after automerging', async () => { config.packageFiles = ['package.json']; config.hasRenovateJson = true; - onboarding.getOnboardingStatus.mockReturnValue(true); + onboarding.getOnboardingStatus.mockImplementation(input => ({ + ...input, + repoIsOnboarded: true, + })); upgrades.branchifyUpgrades.mockReturnValueOnce({ upgrades: [{}, {}, {}], }); @@ -210,7 +216,10 @@ describe('workers/repository', () => { it('stops branchWorker after lockFileError', async () => { config.packageFiles = ['package.json']; config.hasRenovateJson = true; - onboarding.getOnboardingStatus.mockReturnValue(true); + onboarding.getOnboardingStatus.mockImplementation(input => ({ + ...input, + repoIsOnboarded: true, + })); upgrades.branchifyUpgrades.mockReturnValueOnce({ upgrades: [{}, {}, {}], }); @@ -223,7 +232,10 @@ describe('workers/repository', () => { it('stops branchWorker after pin', async () => { config.packageFiles = ['package.json']; config.hasRenovateJson = true; - onboarding.getOnboardingStatus.mockReturnValue(true); + onboarding.getOnboardingStatus.mockImplementation(input => ({ + ...input, + repoIsOnboarded: true, + })); upgrades.branchifyUpgrades.mockReturnValueOnce({ upgrades: [{ type: 'pin' }, {}, {}], }); diff --git a/test/workers/repository/onboarding.spec.js b/test/workers/repository/onboarding.spec.js index 10cb9b43ada75d2700cd07a8dc779a6bbc415c15..8b432bacf3ec5e6672cdc4173cd315d39a83a18b 100644 --- a/test/workers/repository/onboarding.spec.js +++ b/test/workers/repository/onboarding.spec.js @@ -238,21 +238,21 @@ describe('lib/workers/repository/onboarding', () => { it('returns true if onboarding is false', async () => { config.onboarding = false; const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(true); + expect(res.repoIsOnboarded).toEqual(true); expect(config.api.findPr.mock.calls.length).toBe(0); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0); }); it('returns true if renovate config present', async () => { config.renovateJsonPresent = true; const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(true); + expect(res.repoIsOnboarded).toEqual(true); expect(config.api.findPr.mock.calls.length).toBe(0); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0); }); it('returns true if pr and pr is closed', async () => { config.api.findPr.mockReturnValueOnce({ isClosed: true }); const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(true); + expect(res.repoIsOnboarded).toEqual(true); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0); }); @@ -260,7 +260,7 @@ describe('lib/workers/repository/onboarding', () => { config.api.findPr.mockReturnValueOnce({}); config.api.getPr.mockReturnValueOnce({ canRebase: true }); const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(false); + expect(res.repoIsOnboarded).toEqual(false); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1); }); @@ -268,13 +268,13 @@ describe('lib/workers/repository/onboarding', () => { config.api.findPr.mockReturnValueOnce({}); config.api.getPr.mockReturnValueOnce({ canRebase: false }); const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(false); + expect(res.repoIsOnboarded).toEqual(false); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0); }); it('commits files and returns false if no pr', async () => { const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(false); + expect(res.repoIsOnboarded).toEqual(false); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls[0]).toMatchSnapshot(); @@ -282,7 +282,7 @@ describe('lib/workers/repository/onboarding', () => { it('pins private repos', async () => { onboarding.isRepoPrivate.mockReturnValueOnce(true); const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(false); + expect(res.repoIsOnboarded).toEqual(false); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls[0]).toMatchSnapshot(); @@ -290,7 +290,7 @@ describe('lib/workers/repository/onboarding', () => { it('commits files if existing content does not match', async () => { config.api.getFileContent.mockReturnValueOnce('some-different-content'); const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(false); + expect(res.repoIsOnboarded).toEqual(false); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls[0]).toMatchSnapshot(); @@ -299,7 +299,7 @@ describe('lib/workers/repository/onboarding', () => { const existingContent = `{\n "extends": ["config:js-lib"]\n}\n`; config.api.getFileContent.mockReturnValueOnce(existingContent); const res = await onboarding.getOnboardingStatus(config); - expect(res).toEqual(false); + expect(res.repoIsOnboarded).toEqual(false); expect(config.api.findPr.mock.calls.length).toBe(1); expect(config.api.commitFilesToBranch.mock.calls.length).toBe(0); });