Files
bower/test/commands/version.js
Adam Stankiewicz 0a8a4f9029 Format with prettier
2018-03-28 19:10:16 +02:00

156 lines
4.6 KiB
JavaScript

var expect = require('expect.js');
var helpers = require('../helpers');
var version = helpers.require('lib/commands').version;
describe('bower version', function() {
var mainPackage = new helpers.TempDir({
'v0.0.0': {
'bower.json': {
name: 'foobar'
}
}
});
it('bumps patch version', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['patch', {}, { cwd: mainPackage.path }])
.then(function() {
expect(mainPackage.latestGitTag()).to.be('0.0.1');
});
});
it('bumps minor version', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['minor', {}, { cwd: mainPackage.path }])
.then(function() {
expect(mainPackage.latestGitTag()).to.be('0.1.0');
});
});
it('bumps major version', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['major', {}, { cwd: mainPackage.path }])
.then(function() {
expect(mainPackage.latestGitTag()).to.be('1.0.0');
});
});
it('changes version', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['1.2.3', {}, { cwd: mainPackage.path }])
.then(function() {
expect(mainPackage.latestGitTag()).to.be('1.2.3');
});
});
it('returns the new version', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['major', {}, { cwd: mainPackage.path }])
.then(function(results) {
expect(results[0]).to.be('v1.0.0');
});
});
it('fails on a dirty git repository', function() {
mainPackage.prepareGit();
mainPackage.create({
'dirty.txt': 'This file has not been committed'
});
return helpers
.run(version, ['patch', {}, { cwd: mainPackage.path }])
.then(null, function(err) {
expect(err).to.be.an(Error);
expect(err.code).to.be('ENOTGITREPOSITORY');
});
});
it('fails when the version already exists', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['0.0.0', {}, { cwd: mainPackage.path }])
.then(null, function(err) {
expect(err).to.be.an(Error);
expect(err.code).to.be('EVERSIONEXISTS');
});
});
it('fails with an invalid argument', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['lol', {}, { cwd: mainPackage.path }])
.then(null, function(err) {
expect(err).to.be.an(Error);
expect(err.code).to.be('EINVALIDVERSION');
});
});
it('bumps with custom commit message', function() {
mainPackage.prepareGit();
return helpers
.run(version, [
'patch',
{ message: 'Bumping %s, because what' },
{ cwd: mainPackage.path }
])
.then(function() {
var tags = mainPackage.git('tag');
expect(tags).to.be('v0.0.0\nv0.0.1\n');
var message = mainPackage.git(
'log',
'--pretty=format:%s',
'-n1'
);
expect(message).to.be('Bumping v0.0.1, because what');
});
});
it('creates commit and tags', function() {
mainPackage.prepareGit();
return helpers
.run(version, ['patch', {}, { cwd: mainPackage.path }])
.then(function() {
var tags = mainPackage.git('tag');
expect(tags).to.be('v0.0.0\nv0.0.1\n');
var message = mainPackage.git(
'log',
'--pretty=format:%s',
'-n1'
);
expect(message).to.be('v0.0.1');
});
});
it('assumes v0.0.0 when no tags exist', function() {
var packageWithoutTags = new helpers.TempDir({});
packageWithoutTags.prepareGit();
packageWithoutTags.create({
'index.js': 'console.log("hello, world");'
});
packageWithoutTags.git('add', '-A');
packageWithoutTags.git('commit', '-m"commit"');
return helpers
.run(version, ['major', {}, { cwd: packageWithoutTags.path }])
.then(function() {
expect(packageWithoutTags.latestGitTag()).to.be('1.0.0');
});
});
});