import * as fs from 'fs'; import * as path from 'path'; import { describe, it } from 'mocha'; import * as chai from 'chai'; import chaiAsPromised from 'chai-as-promised'; import * as Git from '../../../main/ts/utils/Git'; import * as ArrayUtils from '../../../main/ts/utils/ArrayUtils'; type TempGit = Git.TempGit; const assert = chai.use(chaiAsPromised).assert; const createBranch = async ({ dir, git }: TempGit, branchName: string): Promise => { await Git.checkoutNewBranch(git, branchName); const foofile = path.join(dir, 'foo'); fs.writeFileSync(foofile, 'cat cat'); await git.add(foofile); await git.commit('initial'); await Git.push(git); }; describe('Git', () => { describe('remoteBranches', () => { it('gets remote branches', async () => { const check = async (branchNames: string[]): Promise => { const hub = await Git.initInTempFolder(true); const main = await Git.cloneInTempFolder(hub.dir); for (const branch of branchNames) { await createBranch(main, branch); } const test = await Git.cloneInTempFolder(hub.dir); const branches = await Git.remoteBranchNames(test.git); const actual = ArrayUtils.sort(branches); assert.deepEqual(ArrayUtils.sort(actual), ArrayUtils.sort(branchNames)); }; await check([ 'cat' ]); await check([ 'cat', 'frog', 'chicken' ]); await check([]); await check([ 'zingo', 'release/1.2' ]); }).timeout(45000); // this test can be a bit slow }); });