mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-19 10:41:56 -05:00
Add semver range parsing support
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
namespace ts {
|
||||
import theory = utils.theory;
|
||||
describe("semver", () => {
|
||||
describe("Version", () => {
|
||||
function assertVersion(version: Version, [major, minor, patch, prerelease, build]: [number, number, number, string[]?, string[]?]) {
|
||||
@@ -89,6 +90,139 @@ namespace ts {
|
||||
// > Build metadata does not figure into precedence
|
||||
assert.strictEqual(new Version("1.0.0+build").compareTo(new Version("1.0.0")), Comparison.EqualTo);
|
||||
});
|
||||
it("increment", () => {
|
||||
assertVersion(new Version(1, 2, 3, "pre.4", "build.5").increment("major"), [2, 0, 0]);
|
||||
assertVersion(new Version(1, 2, 3, "pre.4", "build.5").increment("minor"), [1, 3, 0]);
|
||||
assertVersion(new Version(1, 2, 3, "pre.4", "build.5").increment("patch"), [1, 2, 4]);
|
||||
});
|
||||
});
|
||||
describe("VersionRange", () => {
|
||||
function assertRange(rangeText: string, versionText: string, inRange = true) {
|
||||
const range = new VersionRange(rangeText);
|
||||
const version = new Version(versionText);
|
||||
assert.strictEqual(range.test(version), inRange, `Expected version '${version}' ${inRange ? `to be` : `to not be`} in range '${rangeText}' (${range})`);
|
||||
}
|
||||
theory("comparators", assertRange, [
|
||||
["", "1.0.0"],
|
||||
["*", "1.0.0"],
|
||||
["1", "1.0.0"],
|
||||
["1", "2.0.0", false],
|
||||
["1.0", "1.0.0"],
|
||||
["1.0", "1.1.0", false],
|
||||
["1.0.0", "1.0.0"],
|
||||
["1.0.0", "1.0.1", false],
|
||||
["1.*", "1.0.0"],
|
||||
["1.*", "2.0.0", false],
|
||||
["1.x", "1.0.0"],
|
||||
["1.x", "2.0.0", false],
|
||||
["=1", "1.0.0"],
|
||||
["=1", "1.1.0"],
|
||||
["=1", "1.0.1"],
|
||||
["=1.0", "1.0.0"],
|
||||
["=1.0", "1.0.1"],
|
||||
["=1.0.0", "1.0.0"],
|
||||
["=*", "0.0.0"],
|
||||
["=*", "1.0.0"],
|
||||
[">1", "2"],
|
||||
[">1.0", "1.1"],
|
||||
[">1.0.0", "1.0.1"],
|
||||
[">1.0.0", "1.0.1-pre"],
|
||||
[">*", "0.0.0", false],
|
||||
[">*", "1.0.0", false],
|
||||
[">=1", "1.0.0"],
|
||||
[">=1.0", "1.0.0"],
|
||||
[">=1.0.0", "1.0.0"],
|
||||
[">=1.0.0", "1.0.1-pre"],
|
||||
[">=*", "0.0.0"],
|
||||
[">=*", "1.0.0"],
|
||||
["<2", "1.0.0"],
|
||||
["<2.1", "2.0.0"],
|
||||
["<2.0.1", "2.0.0"],
|
||||
["<2.0.0", "2.0.0-pre"],
|
||||
["<*", "0.0.0", false],
|
||||
["<*", "1.0.0", false],
|
||||
["<=2", "2.0.0"],
|
||||
["<=2.1", "2.1.0"],
|
||||
["<=2.0.1", "2.0.1"],
|
||||
["<=*", "0.0.0"],
|
||||
["<=*", "1.0.0"],
|
||||
]);
|
||||
theory("conjunctions", assertRange, [
|
||||
[">1.0.0 <2.0.0", "1.0.1"],
|
||||
[">1.0.0 <2.0.0", "2.0.0", false],
|
||||
[">1.0.0 <2.0.0", "1.0.0", false],
|
||||
[">1 >2", "3.0.0"],
|
||||
]);
|
||||
theory("disjunctions", assertRange, [
|
||||
[">=1.0.0 <2.0.0 || >=3.0.0 <4.0.0", "1.0.0"],
|
||||
[">=1.0.0 <2.0.0 || >=3.0.0 <4.0.0", "2.0.0", false],
|
||||
[">=1.0.0 <2.0.0 || >=3.0.0 <4.0.0", "3.0.0"],
|
||||
]);
|
||||
theory("hyphen", assertRange, [
|
||||
["1.0.0 - 2.0.0", "1.0.0"],
|
||||
["1.0.0 - 2.0.0", "2.0.0"],
|
||||
["1.0.0 - 2.0.0", "3.0.0", false],
|
||||
]);
|
||||
theory("tilde", assertRange, [
|
||||
["~0", "0.0.0"],
|
||||
["~0", "0.1.0"],
|
||||
["~0", "0.1.2"],
|
||||
["~0", "0.1.9"],
|
||||
["~0", "1.0.0", false],
|
||||
["~0.1", "0.1.0"],
|
||||
["~0.1", "0.1.2"],
|
||||
["~0.1", "0.1.9"],
|
||||
["~0.1", "0.2.0", false],
|
||||
["~0.1.2", "0.1.2"],
|
||||
["~0.1.2", "0.1.9"],
|
||||
["~0.1.2", "0.2.0", false],
|
||||
["~1", "1.0.0"],
|
||||
["~1", "1.2.0"],
|
||||
["~1", "1.2.3"],
|
||||
["~1", "1.2.0"],
|
||||
["~1", "1.2.3"],
|
||||
["~1", "0.0.0", false],
|
||||
["~1", "2.0.0", false],
|
||||
["~1.2", "1.2.0"],
|
||||
["~1.2", "1.2.3"],
|
||||
["~1.2", "1.1.0", false],
|
||||
["~1.2", "1.3.0", false],
|
||||
["~1.2.3", "1.2.3"],
|
||||
["~1.2.3", "1.2.9"],
|
||||
["~1.2.3", "1.1.0", false],
|
||||
["~1.2.3", "1.3.0", false],
|
||||
]);
|
||||
theory("caret", assertRange, [
|
||||
["^0", "0.0.0"],
|
||||
["^0", "0.1.0"],
|
||||
["^0", "0.9.0"],
|
||||
["^0", "0.1.2"],
|
||||
["^0", "0.1.9"],
|
||||
["^0", "1.0.0", false],
|
||||
["^0.1", "0.1.0"],
|
||||
["^0.1", "0.1.2"],
|
||||
["^0.1", "0.1.9"],
|
||||
["^0.1.2", "0.1.2"],
|
||||
["^0.1.2", "0.1.9"],
|
||||
["^0.1.2", "0.0.0", false],
|
||||
["^0.1.2", "0.2.0", false],
|
||||
["^0.1.2", "1.0.0", false],
|
||||
["^1", "1.0.0"],
|
||||
["^1", "1.2.0"],
|
||||
["^1", "1.2.3"],
|
||||
["^1", "1.9.0"],
|
||||
["^1", "0.0.0", false],
|
||||
["^1", "2.0.0", false],
|
||||
["^1.2", "1.2.0"],
|
||||
["^1.2", "1.2.3"],
|
||||
["^1.2", "1.9.0"],
|
||||
["^1.2", "1.1.0", false],
|
||||
["^1.2", "2.0.0", false],
|
||||
["^1.2.3", "1.2.3"],
|
||||
["^1.2.3", "1.9.0"],
|
||||
["^1.2.3", "1.2.2", false],
|
||||
["^1.2.3", "2.0.0", false],
|
||||
]);
|
||||
});
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user