mercurial-bower-resolver
Version:
219 lines (159 loc) • 7.69 kB
JavaScript
'use strict';
// Test setup:
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
var _chai = require('chai');
var _chai2 = _interopRequireDefault(_chai);
var _sinon = require('sinon');
var _sinon2 = _interopRequireDefault(_sinon);
var _sinonChai = require('sinon-chai');
var _sinonChai2 = _interopRequireDefault(_sinonChai);
// Under test:
var _mercurial = require('./mercurial');
var _mercurial2 = _interopRequireDefault(_mercurial);
var expect = _chai2['default'].expect;
_chai2['default'].use(_sinonChai2['default']);
describe('mercurial:', function () {
describe('mercurial.clone:', function () {
it('should clean up the given URL', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var directory = { name: 'directory' };
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var clone = _mercurial2['default'].clone('hg+https://source/', directory).then(function () {
expect(child_process.spawn).to.have.been.calledWith('hg', ['clone', 'https://source', 'directory']);
child_process.spawn.restore();
});
hg.emit('exit', '');
return clone;
});
it('should clone to a given directory', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var tmp = require('tmp');
var directory = { name: 'directory' };
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(tmp, 'dirSync');
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var clone = _mercurial2['default'].clone('http://source', directory).then(function (directory) {
expect(tmp.dirSync).to.not.have.been.called;
expect(child_process.spawn).to.have.been.calledWith('hg', ['clone', 'http://source', 'directory']);
expect(directory.name).to.equal('directory');
tmp.dirSync.restore();
child_process.spawn.restore();
});
hg.emit('exit', '');
return clone;
});
it('should create a temporary directory if one doesn\'t exist', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var tmp = require('tmp');
var directory = { name: 'directory' };
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(tmp, 'dirSync').returns(directory);
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var clone = _mercurial2['default'].clone('http://source').then(function (directory) {
expect(tmp.dirSync).to.have.been.called;
expect(child_process.spawn).to.have.been.calledWith('hg', ['clone', 'http://source', 'directory']);
expect(directory.name).to.equal('directory');
tmp.dirSync.restore();
child_process.spawn.restore();
});
hg.emit('exit', '');
return clone;
});
});
describe('mercurial.branches:', function () {
it('should return the branches of the repo in a given directory', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var directory = 'directory';
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var branches = _mercurial2['default'].branches(directory).then(function (branches) {
expect(child_process.spawn).to.have.been.calledWith('hg', ['branches'], { cwd: 'directory' });
expect(branches).to.equal('branches');
child_process.spawn.restore();
});
hg.stdout.emit('data', 'branches');
hg.emit('exit', '');
return branches;
});
});
describe('mercurial.tags:', function () {
it('should return the tags of the repo in a given directory', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var directory = 'directory';
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var tags = _mercurial2['default'].tags(directory).then(function (tags) {
expect(child_process.spawn).to.have.been.calledWith('hg', ['tags'], { cwd: 'directory' });
expect(tags).to.equal('tags');
child_process.spawn.restore();
});
hg.stdout.emit('data', 'tags');
hg.emit('exit', '');
return tags;
});
});
describe('mercurial.update:', function () {
it('should update the repo to a given target', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var endpoint = { target: 'target' };
var directory = 'directory';
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var tags = _mercurial2['default'].update(endpoint, directory).then(function () {
expect(child_process.spawn).to.have.been.calledWith('hg', ['up', 'target'], { cwd: 'directory' });
child_process.spawn.restore();
});
hg.emit('exit', '');
return tags;
});
it('should specify the -r flag for a revision', function () {
var child_process = require('child_process');
var EventEmitter = require('events').EventEmitter;
var endpoint = { target: '1234567890ab' };
var directory = 'directory';
var hg = new EventEmitter();
var stdout = new EventEmitter();
var stderr = new EventEmitter();
hg.stdout = stdout;
hg.stderr = stderr;
_sinon2['default'].stub(child_process, 'spawn').returns(hg);
var tags = _mercurial2['default'].update(endpoint, directory).then(function () {
expect(child_process.spawn).to.have.been.calledWith('hg', ['up', '-r', '1234567890ab'], { cwd: 'directory' });
child_process.spawn.restore();
});
hg.emit('exit', '');
return tags;
});
});
});