diff --git a/lib/branches/normalize.js b/lib/branches/normalize.js index 4e3e9b01f0..103519c10b 100644 --- a/lib/branches/normalize.js +++ b/lib/branches/normalize.js @@ -91,6 +91,7 @@ function release({release}) { name, range: getRange(min, bound), accept: bound ? RELEASE_TYPE.slice(0, RELEASE_TYPE.indexOf(diff)) : RELEASE_TYPE, + main: idx === 0, }; }); } diff --git a/test/branches/normalize.test.js b/test/branches/normalize.test.js index d137af41e5..b7e01a1a13 100644 --- a/test/branches/normalize.test.js +++ b/test/branches/normalize.test.js @@ -155,16 +155,26 @@ test('Release branches - initial state', t => { ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=1.0.0 <1.1.0', accept: ['patch'], channel: undefined}, - {type: 'release', name: 'next', range: '>=1.1.0 <2.0.0', accept: ['patch', 'minor'], channel: 'next'}, + {type: 'release', name: 'master', range: '>=1.0.0 <1.1.0', accept: ['patch'], channel: undefined, main: true}, + { + type: 'release', + name: 'next', + range: '>=1.1.0 <2.0.0', + accept: ['patch', 'minor'], + channel: 'next', + main: false, + }, { type: 'release', name: 'next-major', range: '>=2.0.0', accept: ['patch', 'minor', 'major'], channel: 'next-major', + main: false, }, ] ); @@ -178,16 +188,26 @@ test('Release branches - 3 release branches', t => { ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=1.0.2 <1.1.0', accept: ['patch'], channel: undefined}, - {type: 'release', name: 'next', range: '>=1.2.0 <2.0.0', accept: ['patch', 'minor'], channel: 'next'}, + {type: 'release', name: 'master', range: '>=1.0.2 <1.1.0', accept: ['patch'], channel: undefined, main: true}, + { + type: 'release', + name: 'next', + range: '>=1.2.0 <2.0.0', + accept: ['patch', 'minor'], + channel: 'next', + main: false, + }, { type: 'release', name: 'next-major', range: '>=2.1.0', accept: ['patch', 'minor', 'major'], channel: 'next-major', + main: false, }, ] ); @@ -200,10 +220,26 @@ test('Release branches - 2 release branches', t => { ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=1.2.0 <2.0.0', accept: ['patch', 'minor'], channel: undefined}, - {type: 'release', name: 'next', range: '>=2.1.0', accept: ['patch', 'minor', 'major'], channel: 'next'}, + { + type: 'release', + name: 'master', + range: '>=1.2.0 <2.0.0', + accept: ['patch', 'minor'], + channel: undefined, + main: true, + }, + { + type: 'release', + name: 'next', + range: '>=2.1.0', + accept: ['patch', 'minor', 'major'], + channel: 'next', + main: false, + }, ] ); }); @@ -225,16 +261,19 @@ test('Release branches - cap ranges to first release only present on following b ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=2.0.0 <2.1.0', accept: ['patch'], channel: undefined}, - {type: 'release', name: 'next', range: '>=2.1.0 <2.2.0', accept: ['patch'], channel: 'next'}, + {type: 'release', name: 'master', range: '>=2.0.0 <2.1.0', accept: ['patch'], channel: undefined, main: true}, + {type: 'release', name: 'next', range: '>=2.1.0 <2.2.0', accept: ['patch'], channel: 'next', main: false}, { type: 'release', name: 'next-major', range: '>=2.2.0', accept: ['patch', 'minor', 'major'], channel: 'next-major', + main: false, }, ] ); @@ -247,10 +286,26 @@ test('Release branches - Handle missing previous tags in branch history', t => { ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=2.0.0 <3.0.0', accept: ['patch', 'minor'], channel: undefined}, - {type: 'release', name: 'next', range: '>=3.0.0', accept: ['patch', 'minor', 'major'], channel: 'next'}, + { + type: 'release', + name: 'master', + range: '>=2.0.0 <3.0.0', + accept: ['patch', 'minor'], + channel: undefined, + main: true, + }, + { + type: 'release', + name: 'next', + range: '>=3.0.0', + accept: ['patch', 'minor', 'major'], + channel: 'next', + main: false, + }, ] ); }); @@ -263,16 +318,26 @@ test('Release branches - enforce release gaps after downstream merge', t => { ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=2.0.0 <2.1.0', accept: ['patch'], channel: undefined}, - {type: 'release', name: 'next', range: '>=2.1.0 <3.0.0', accept: ['patch', 'minor'], channel: 'next'}, + {type: 'release', name: 'master', range: '>=2.0.0 <2.1.0', accept: ['patch'], channel: undefined, main: true}, + { + type: 'release', + name: 'next', + range: '>=2.1.0 <3.0.0', + accept: ['patch', 'minor'], + channel: 'next', + main: false, + }, { type: 'release', name: 'next-major', range: '>=3.0.0', accept: ['patch', 'minor', 'major'], channel: 'next-major', + main: false, }, ] ); @@ -286,16 +351,26 @@ test('Release branches - limit releases on 2nd and 3rd branche based on 1st bran ]; t.deepEqual( - normalize.release({release}).map(({type, name, range, accept, channel}) => ({type, name, range, accept, channel})), + normalize + .release({release}) + .map(({type, name, range, accept, channel, main}) => ({type, name, range, accept, channel, main})), [ - {type: 'release', name: 'master', range: '>=3.0.0 <3.1.0', accept: ['patch'], channel: undefined}, - {type: 'release', name: 'next', range: '>=3.1.0 <4.0.0', accept: ['patch', 'minor'], channel: 'next'}, + {type: 'release', name: 'master', range: '>=3.0.0 <3.1.0', accept: ['patch'], channel: undefined, main: true}, + { + type: 'release', + name: 'next', + range: '>=3.1.0 <4.0.0', + accept: ['patch', 'minor'], + channel: 'next', + main: false, + }, { type: 'release', name: 'next-major', range: '>=4.0.0', accept: ['patch', 'minor', 'major'], channel: 'next-major', + main: false, }, ] ); diff --git a/test/index.test.js b/test/index.test.js index 7c86579c30..11f35ca283 100644 --- a/test/index.test.js +++ b/test/index.test.js @@ -98,6 +98,7 @@ test('Plugins are called with expected values', async t => { accept: ['patch', 'minor'], tags: [{channels: ['next'], gitTag: 'v1.0.0@next', version: '1.0.0'}], type: 'release', + main: true, }, { channel: 'next', @@ -106,6 +107,7 @@ test('Plugins are called with expected values', async t => { accept: ['patch', 'minor', 'major'], tags: [{channels: ['next'], gitTag: 'v1.0.0@next', version: '1.0.0'}], type: 'release', + main: false, }, ]; const branch = branches[0];