fix(repository): Ignore uninitiated repositories

Closes #379
This commit is contained in:
Rhys Arkins 2017-07-18 14:31:48 +02:00
parent f6980b51f2
commit 8666835bc8
3 changed files with 30 additions and 8 deletions

View file

@ -163,7 +163,11 @@ async function initRepo(repoName, token, endpoint, repoLogger) {
logger.debug('Could not find allowed merge methods for repo');
}
} catch (err) /* istanbul ignore next */ {
logger.error(`GitHub init error: ${JSON.stringify(err)}`);
if (err.statusCode === 409) {
logger.debug('Repository is not initiated');
throw new Error('uninitiated');
}
logger.error('Unknown GitHub initRepo error');
throw err;
}
return config;

View file

@ -94,9 +94,14 @@ async function renovateRepository(repoConfig, token) {
branchList = ['renovate/configure'];
}
await cleanup.pruneStaleBranches(config, branchList);
} catch (error) {
} catch (err) {
console.log(JSON.stringify(err));
// Swallow this error so that other repositories can be processed
config.logger.error(`Failed to process repository: ${error.message}`);
config.logger.debug({ error });
if (err.message === 'uninitiated') {
config.logger.info('Repository is unitiated - skipping');
} else {
config.logger.error(`Failed to process repository: ${err.message}`);
config.logger.debug({ err });
}
}
}

View file

@ -7,14 +7,14 @@ const upgrades = require('../../../lib/workers/repository/upgrades');
const logger = require('../../_fixtures/logger');
apis.initApis = jest.fn(input => input);
apis.mergeRenovateJson = jest.fn(input => input);
apis.detectPackageFiles = jest.fn();
describe('workers/repository', () => {
describe('renovateRepository', () => {
let config;
beforeEach(() => {
jest.resetAllMocks();
apis.initApis = jest.fn(input => input);
apis.mergeRenovateJson = jest.fn(input => input);
apis.detectPackageFiles = jest.fn();
onboarding.getOnboardingStatus = jest.fn();
onboarding.ensurePr = jest.fn();
upgrades.determineRepoUpgrades = jest.fn(() => []);
@ -140,5 +140,18 @@ describe('workers/repository', () => {
await repositoryWorker.renovateRepository(config);
expect(config.logger.error.mock.calls.length).toBe(1);
});
it('handles special uninitiated error', async () => {
apis.initApis.mockImplementationOnce(() => {
// Create a new object, that prototypically inherits from the Error constructor
function MyError() {
this.message = 'uninitiated';
}
MyError.prototype = Object.create(Error.prototype);
MyError.prototype.constructor = MyError;
throw new MyError();
});
await repositoryWorker.renovateRepository(config);
expect(config.logger.error.mock.calls.length).toBe(0);
});
});
});