@tinymce/beehive-flow
Version:
A CLI tool implementing the beehive flow git branching process
42 lines (35 loc) • 1.75 kB
text/typescript
import { describe, it } from 'mocha';
import { assert } from 'chai';
import { versionFromReleaseBranch } from '../../../main/ts/core/BranchLogic';
import { versionToString } from '../../../main/ts/core/Version';
import * as Git from '../../../main/ts/utils/Git';
import { beehiveFlow, makeBranchWithPj, readPjVersionInDir } from './TestUtils';
describe('Prepare', () => {
const runScenario = async (version: string, branches: string[] = []) => {
const hub = await Git.initInTempFolder(true);
const { dir, git } = await Git.cloneInTempFolder(hub.dir);
const packageName = 'test-prepare';
await makeBranchWithPj(git, 'main', dir, packageName, version);
for (const branch of branches) {
const releaseVersion = await versionFromReleaseBranch(branch);
await makeBranchWithPj(git, branch, dir, packageName, versionToString({ patch: 0, ...releaseVersion }));
}
await beehiveFlow([ 'prepare', '--working-dir', dir ]);
await git.pull();
return { git, dir };
};
it('retains the current patch version in the release branch', async () => {
const { git, dir } = await runScenario( '1.1.2-rc');
await assert.becomes(readPjVersionInDir(dir), '1.2.0-rc');
await git.checkout('release/1.1');
await assert.becomes(readPjVersionInDir(dir), '1.1.2-rc');
});
it('fails if the main branch is not an RC version', async () => {
const result = runScenario('0.1.0');
await assert.isRejected(result, 'main branch should have an rc version when running this command');
});
it('fails if a release branch already exists', async () => {
const result = runScenario('0.1.0-rc', [ 'release/0.1' ]);
await assert.isRejected(result, 'Remote branch already exists: release/0.1');
});
});