UNPKG

mercurial-bower-resolver

Version:
219 lines (159 loc) 7.69 kB
'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; }); }); });