Skip to content
Snippets Groups Projects
Commit a2ef0944 authored by Rhys Arkins's avatar Rhys Arkins
Browse files

feat: support pinned versions in .travis.yml

If the existing version was pinned, or if pinVersions=true, then Renovate will use pinned versions for all the new values.

Closes #1605
parent e29c2d5a
No related branches found
No related tags found
No related merge requests found
const { isEqual } = require('lodash');
const semver = require('semver');
const { getRepoReleases } = require('../../datasource/github');
module.exports = {
getPackageUpdates,
......@@ -13,19 +15,25 @@ const policies = {
lts_latest: [8],
};
function getPackageUpdates(config) {
async function getPackageUpdates(config) {
logger.debug('travis.getPackageUpdates()');
let { supportPolicy } = config;
if (!(supportPolicy && supportPolicy.length)) {
supportPolicy = ['lts'];
}
const newVersion = supportPolicy
let newVersion = supportPolicy
.map(policy => policies[policy])
.reduce((result, policy) => result.concat(policy), [])
.sort() // sort combined array
.reverse() // we want to order latest to oldest
.map(version => `${version}`); // convert to strings
logger.debug({ newVersion });
if (config.pinVersions || semver.valid(config.currentVersion[0])) {
const releases = await getRepoReleases('nodejs/node');
newVersion = newVersion.map(version =>
semver.maxSatisfying(releases, version).replace(/^v/, '')
);
}
if (isEqual([...config.currentVersion].sort(), [...newVersion].sort())) {
return [];
}
......
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`lib/workers/package/node getPackageUpdates detects pinning 1`] = `
Array [
Object {
"isRange": true,
"newVersion": Array [
"8.9.4",
"6.11.0",
"4.4.4",
],
"repositoryUrl": "https://github.com/nodejs/node",
},
]
`;
exports[`lib/workers/package/node getPackageUpdates returns result if needing updates 1`] = `
Array [
Object {
......
const node = require('../../../lib/manager/travis/package');
const defaultConfig = require('../../../lib/config/defaults').getConfig();
const githubDatasource = require('../../../lib/datasource/github');
jest.mock('../../../lib/datasource/github');
describe('lib/workers/package/node', () => {
describe('getPackageUpdates', () => {
......@@ -18,5 +21,17 @@ describe('lib/workers/package/node', () => {
config.currentVersion = ['6', '8'];
expect(await node.getPackageUpdates(config)).toMatchSnapshot();
});
it('detects pinning', async () => {
config.currentVersion = ['6.1.0', '8.4.0'];
githubDatasource.getRepoReleases.mockReturnValueOnce([
'v4.4.4',
'v5.5.5',
'v6.11.0',
'v7.0.0',
'v8.9.4',
'v9.5.0',
]);
expect(await node.getPackageUpdates(config)).toMatchSnapshot();
});
});
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment