/
minVersion_test.ts
77 lines (67 loc) · 2.02 KB
/
minVersion_test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
// Copyright Isaac Z. Schlueter and Contributors. All rights reserved. ISC license.
// Copyright 2018-2022 the Deno authors. All rights reserved. MIT license.
import { assert } from "../testing/asserts.ts";
import * as semver from "./mod.ts";
Deno.test("minVersion", function () {
// [range, version]
const versions: [string, string | null][] = [
// Stars
["*", "0.0.0"],
["* || >=2", "0.0.0"],
[">=2 || *", "0.0.0"],
[">2 || *", "0.0.0"],
// equal
["1.0.0", "1.0.0"],
["1.0", "1.0.0"],
["1.0.x", "1.0.0"],
["1.0.*", "1.0.0"],
["1", "1.0.0"],
["1.x.x", "1.0.0"],
["1.x.x", "1.0.0"],
["1.*.x", "1.0.0"],
["1.x.*", "1.0.0"],
["1.x", "1.0.0"],
["1.*", "1.0.0"],
["=1.0.0", "1.0.0"],
// Tilde
["~1.1.1", "1.1.1"],
["~1.1.1-beta", "1.1.1-beta"],
["~1.1.1 || >=2", "1.1.1"],
// Carot
["^1.1.1", "1.1.1"],
["^1.1.1-beta", "1.1.1-beta"],
["^1.1.1 || >=2", "1.1.1"],
// '-' operator
["1.1.1 - 1.8.0", "1.1.1"],
["1.1 - 1.8.0", "1.1.0"],
// Less / less or equal
["<2", "0.0.0"],
["<0.0.0-beta", "0.0.0-0"],
["<0.0.1-beta", "0.0.0"],
["<2 || >4", "0.0.0"],
[">4 || <2", "0.0.0"],
["<=2 || >=4", "0.0.0"],
[">=4 || <=2", "0.0.0"],
["<0.0.0-beta >0.0.0-alpha", "0.0.0-alpha.0"],
[">0.0.0-alpha <0.0.0-beta", "0.0.0-alpha.0"],
// Greater than or equal
[">=1.1.1 <2 || >=2.2.2 <2", "1.1.1"],
[">=2.2.2 <2 || >=1.1.1 <2", "1.1.1"],
// Greater than but not equal
[">1.0.0", "1.0.1"],
[">1.0.0-0", "1.0.0-0.0"],
[">1.0.0-beta", "1.0.0-beta.0"],
[">2 || >1.0.0", "1.0.1"],
[">2 || >1.0.0-0", "1.0.0-0.0"],
[">2 || >1.0.0-beta", "1.0.0-beta.0"],
// Impossible range
[">4 <3", null],
];
versions.forEach(function (tuple) {
const range = tuple[0];
const version = tuple[1];
const msg = `minVersion(${range}) = ${version}`;
const min = semver.minVersion(range);
assert((min as null) === version || (min && min.version === version), msg);
});
});