for #2543 BREAKING CHANGE: semantic-release is now ESM-only. since it is used through its own executable, the impact on consuming projects should be minimal BREAKING CHANGE: references to plugin files in configs need to include the file extension because of executing in an ESM context
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import test from 'ava';
 | |
| import expand from '../../lib/branches/expand.js';
 | |
| import {gitCheckout, gitCommits, gitPush, gitRepo} from '../helpers/git-utils.js';
 | |
| 
 | |
| test('Expand branches defined with globs', async (t) => {
 | |
|   const {cwd, repositoryUrl} = await gitRepo(true);
 | |
|   await gitCommits(['First'], {cwd});
 | |
|   await gitPush(repositoryUrl, 'master', {cwd});
 | |
|   await gitCheckout('1.0.x', true, {cwd});
 | |
|   await gitCommits(['Second'], {cwd});
 | |
|   await gitPush(repositoryUrl, '1.0.x', {cwd});
 | |
|   await gitCheckout('1.x.x', true, {cwd});
 | |
|   await gitCommits(['Third'], {cwd});
 | |
|   await gitPush(repositoryUrl, '1.x.x', {cwd});
 | |
|   await gitCheckout('2.x', true, {cwd});
 | |
|   await gitCommits(['Fourth'], {cwd});
 | |
|   await gitPush(repositoryUrl, '2.x', {cwd});
 | |
|   await gitCheckout('next', true, {cwd});
 | |
|   await gitCommits(['Fifth'], {cwd});
 | |
|   await gitPush(repositoryUrl, 'next', {cwd});
 | |
|   await gitCheckout('pre/foo', true, {cwd});
 | |
|   await gitCommits(['Sixth'], {cwd});
 | |
|   await gitPush(repositoryUrl, 'pre/foo', {cwd});
 | |
|   await gitCheckout('pre/bar', true, {cwd});
 | |
|   await gitCommits(['Seventh'], {cwd});
 | |
|   await gitPush(repositoryUrl, 'pre/bar', {cwd});
 | |
|   await gitCheckout('beta', true, {cwd});
 | |
|   await gitCommits(['Eighth'], {cwd});
 | |
|   await gitPush(repositoryUrl, 'beta', {cwd});
 | |
| 
 | |
|   const branches = [
 | |
|     // Should match all maintenance type branches
 | |
|     {name: '+([0-9])?(.{+([0-9]),x}).x'},
 | |
|     {name: 'master', channel: 'latest'},
 | |
|     {name: 'next'},
 | |
|     {name: 'pre/{foo,bar}', channel: `\${name.replace(/^pre\\//g, '')}`, prerelease: true},
 | |
|     // Should be ignored as there is no matching branches in the repo
 | |
|     {name: 'missing'},
 | |
|     // Should be ignored as the matching branch in the repo is already matched by `/^pre\\/(\\w+)$/gi`
 | |
|     {name: '*/foo', channel: 'foo', prerelease: 'foo'},
 | |
|     {name: 'beta', channel: `channel-\${name}`, prerelease: true},
 | |
|   ];
 | |
| 
 | |
|   t.deepEqual(await expand(repositoryUrl, {cwd}, branches), [
 | |
|     {name: '1.0.x'},
 | |
|     {name: '1.x.x'},
 | |
|     {name: '2.x'},
 | |
|     {name: 'master', channel: 'latest'},
 | |
|     {name: 'next'},
 | |
|     {name: 'pre/bar', channel: 'bar', prerelease: true},
 | |
|     {name: 'pre/foo', channel: 'foo', prerelease: true},
 | |
|     {name: 'beta', channel: 'channel-beta', prerelease: true},
 | |
|   ]);
 | |
| });
 |