2015-06-06 21:22:04 +00:00
|
|
|
var assert = require('chai').assert;
|
|
|
|
var semverutils = require('../semver-utils');
|
|
|
|
var deepOwnEqual = require('./deepOwnEqual');
|
|
|
|
|
|
|
|
describe('parse', function() {
|
|
|
|
|
|
|
|
it('should parse a simple 3-part version', function() {
|
|
|
|
deepOwnEqual(semverutils.parse('1.0.0'), {
|
|
|
|
semver: '1.0.0',
|
|
|
|
version: '1.0.0',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse pre-release versions', function() {
|
|
|
|
deepOwnEqual(semverutils.parse('1.0.0-alpha1'), {
|
|
|
|
semver: '1.0.0-alpha1',
|
|
|
|
version: '1.0.0',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0',
|
|
|
|
release: 'alpha1'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse build numbers', function() {
|
|
|
|
deepOwnEqual(semverutils.parse('1.0.0+build-123'), {
|
|
|
|
semver: '1.0.0+build-123',
|
|
|
|
version: '1.0.0',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0',
|
|
|
|
build: 'build-123'
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should not parse invalid versions', function() {
|
|
|
|
assert.equal(semverutils.parse('a.b.c'), null);
|
|
|
|
assert.equal(semverutils.parse('1'), null);
|
|
|
|
assert.equal(semverutils.parse('1.0'), null);
|
|
|
|
assert.equal(semverutils.parse('1.0.0b'), null);
|
|
|
|
assert.equal(semverutils.parse('1.0.0+build-abc.'), null, 'trailing period');
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('parseRange', function() {
|
|
|
|
|
|
|
|
it('should parse an exact version as a range', function() {
|
|
|
|
|
|
|
|
deepOwnEqual(semverutils.parseRange('1.0.0'), [{
|
|
|
|
semver: '1.0.0',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should ignore the v- prefix', function() {
|
|
|
|
|
|
|
|
deepOwnEqual(semverutils.parseRange('v1.0.0'), [{
|
|
|
|
semver: 'v1.0.0',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse a comparison operator', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('< v2.0.0'), [{
|
|
|
|
semver: '< v2.0.0',
|
|
|
|
operator: '<',
|
|
|
|
major: '2',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse tilde', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('~1.0.0'), [{
|
|
|
|
semver: '~1.0.0',
|
|
|
|
operator: '~',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
2015-06-06 21:27:43 +00:00
|
|
|
it('should parse caret', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('^1.0.0'), [{
|
|
|
|
semver: '^1.0.0',
|
|
|
|
operator: '^',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
2015-06-06 21:22:04 +00:00
|
|
|
it('should parse tilde and v- prefix', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('~v1.0.0'), [{
|
|
|
|
semver: '~v1.0.0',
|
|
|
|
operator: '~',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse ||', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('~1.0.0 || ~2.0.0'), [{
|
|
|
|
semver: '~1.0.0',
|
|
|
|
operator: '~',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}, {
|
|
|
|
operator: '||'
|
|
|
|
}, {
|
|
|
|
semver: '~2.0.0',
|
|
|
|
operator: '~',
|
|
|
|
major: '2',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse build numbers', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('2.0.0+build.1848'), [{
|
|
|
|
semver: '2.0.0+build.1848',
|
|
|
|
major: '2',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0',
|
|
|
|
build: 'build.1848'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
2015-08-03 17:12:58 +00:00
|
|
|
it('should parse pre-release versions', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('1.0.0-rc1'), [{
|
|
|
|
semver: '1.0.0-rc1',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0',
|
|
|
|
release: 'rc1'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse pre-release versions with hyphens', function() {
|
|
|
|
|
|
|
|
deepOwnEqual(semverutils.parseRange('1.0.0-rc-2'), [{
|
|
|
|
semver: '1.0.0-rc-2',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0',
|
|
|
|
release: 'rc-2'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
2015-06-06 21:22:04 +00:00
|
|
|
it('should parse hyphen ranges', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('1.0.0 - 1.0.x'), [{
|
|
|
|
semver: '1.0.0',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}, {
|
|
|
|
operator: '-'
|
|
|
|
}, {
|
|
|
|
semver: '1.0.x',
|
|
|
|
major: '1',
|
|
|
|
minor: '0',
|
|
|
|
patch: 'x'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse constrained * ranges', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('1.*'), [{
|
|
|
|
semver: '1.*',
|
|
|
|
major: '1',
|
|
|
|
minor: '*',
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('should parse constrained .x', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('1.x'), [{
|
|
|
|
semver: '1.x',
|
|
|
|
major: '1',
|
|
|
|
minor: 'x',
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
2018-10-09 01:11:40 +00:00
|
|
|
it('should parse ~> ranges', function() {
|
|
|
|
deepOwnEqual(semverutils.parseRange('~> 2.0.0'), [{
|
|
|
|
semver: '~> 2.0.0',
|
|
|
|
operator: '~>',
|
|
|
|
major: '2',
|
|
|
|
minor: '0',
|
|
|
|
patch: '0'
|
|
|
|
}]);
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|