forked from renovatebot/renovate
/
index.spec.ts
182 lines (175 loc) · 7.77 KB
/
index.spec.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
import {
REV_TYPE_LATEST,
REV_TYPE_RANGE,
REV_TYPE_SUBREV,
parseDynamicRevision,
} from './parse';
import ivy from '.';
describe('versioning/ivy/index', () => {
test.each`
input | type | value
${'latest'} | ${REV_TYPE_LATEST} | ${null}
${'latest.release'} | ${REV_TYPE_LATEST} | ${'release'}
${'latest.milestone'} | ${REV_TYPE_LATEST} | ${'milestone'}
${'latest.integration'} | ${REV_TYPE_LATEST} | ${null}
${'1.0.+'} | ${REV_TYPE_SUBREV} | ${'1.0'}
${'1.2.3.+'} | ${REV_TYPE_SUBREV} | ${'1.2.3'}
${'[1.0,2.0]'} | ${REV_TYPE_RANGE} | ${'[1.0,2.0]'}
${'[1.0,2.0['} | ${REV_TYPE_RANGE} | ${'[1.0,2.0['}
${']1.0,2.0]'} | ${REV_TYPE_RANGE} | ${']1.0,2.0]'}
${']1.0,2.0['} | ${REV_TYPE_RANGE} | ${']1.0,2.0['}
${'[1.0,)'} | ${REV_TYPE_RANGE} | ${'[1.0,)'}
${']1.0,)'} | ${REV_TYPE_RANGE} | ${']1.0,)'}
${'(,2.0]'} | ${REV_TYPE_RANGE} | ${'(,2.0]'}
${'(,2.0['} | ${REV_TYPE_RANGE} | ${'(,2.0['}
`(
'parseDynamicRevision("$input") === { type: "$type", value: "$value" }',
({ input, type, value }) => {
expect(parseDynamicRevision(input)).toEqual({ type, value });
}
);
test.each`
input
${null}
${''}
${'.+'}
${'[0,1),(1,)'}
`('parseDynamicRevision("$input") === null', ({ input, type, value }) => {
expect(parseDynamicRevision(value)).toBeNull();
});
test.each`
input | expected
${''} | ${false}
${'1.0.0'} | ${true}
${'0'} | ${true}
${'0.1-2-sp'} | ${true}
${'1-final'} | ${true}
${'v1.0.0'} | ${true}
${'x1.0.0'} | ${true}
${'2.1.1.RELEASE'} | ${true}
${'Greenwich.SR1'} | ${true}
${'.1'} | ${false}
${'1.'} | ${false}
${'-1'} | ${false}
${'1-'} | ${false}
${'latest'} | ${true}
${'latest.release'} | ${true}
${'latest.milestone'} | ${true}
${'latest.integration'} | ${true}
${'1.0.+'} | ${true}
${'1.0+'} | ${false}
${']0,1['} | ${true}
${'[0,1]'} | ${true}
${'[0,1),(1,2]'} | ${false}
`('isValid("$input") === $expected', ({ input, expected }) => {
const res = !!ivy.isValid(input);
expect(res).toBe(expected);
});
test.each`
input | expected
${''} | ${false}
${'1.0.0'} | ${true}
${'0'} | ${true}
${'0.1-2-sp'} | ${true}
${'1-final'} | ${true}
${'v1.0.0'} | ${true}
${'x1.0.0'} | ${true}
${'2.1.1.RELEASE'} | ${true}
${'Greenwich.SR1'} | ${true}
${'.1'} | ${false}
${'1.'} | ${false}
${'-1'} | ${false}
${'1-'} | ${false}
${'latest'} | ${false}
${'latest.release'} | ${false}
${'latest.milestone'} | ${false}
${'latest.integration'} | ${false}
${'1.0.+'} | ${false}
${'1.0+'} | ${false}
${']0,1['} | ${false}
${'[0,1]'} | ${false}
${'[0,1),(1,2]'} | ${false}
`('isVersion("$input") === $expected', ({ input, expected }) => {
expect(ivy.isVersion(input)).toBe(expected);
});
test.each`
version | range | expected
${''} | ${'latest'} | ${false}
${'0'} | ${''} | ${false}
${'0'} | ${'latest'} | ${true}
${'0'} | ${'latest.integration'} | ${true}
${'0'} | ${'latest.release'} | ${false}
${'release'} | ${'latest.release'} | ${true}
${'0.release'} | ${'latest.release'} | ${true}
${'0-release'} | ${'latest.release'} | ${true}
${'0release'} | ${'latest.release'} | ${true}
${'0.RELEASE'} | ${'latest.release'} | ${true}
${'0'} | ${'latest.milestone'} | ${false}
${'milestone'} | ${'latest.milestone'} | ${true}
${'0.milestone'} | ${'latest.milestone'} | ${true}
${'0-milestone'} | ${'latest.milestone'} | ${true}
${'0milestone'} | ${'latest.milestone'} | ${true}
${'0.MILESTONE'} | ${'latest.milestone'} | ${true}
${'0'} | ${'1.0.+'} | ${false}
${'1.1.0'} | ${'1.2.+'} | ${false}
${'1.2.0'} | ${'1.2.+'} | ${true}
${'1.2.milestone'} | ${'1.2.+'} | ${true}
${'1.3'} | ${'1.2.+'} | ${false}
${'1'} | ${'1'} | ${true}
${'1'} | ${'0'} | ${false}
${'1'} | ${'[0,1]'} | ${true}
${'0'} | ${'(0,1)'} | ${false}
${'0'} | ${'(0,1['} | ${false}
${'0'} | ${']0,1)'} | ${false}
${'1'} | ${'(0,1)'} | ${false}
${'1'} | ${'(0,2)'} | ${true}
${'1'} | ${'[0,2]'} | ${true}
${'1'} | ${'(,1]'} | ${true}
${'1'} | ${'(,1)'} | ${false}
${'1'} | ${'[1,)'} | ${true}
${'1'} | ${'(1,)'} | ${false}
`(
'matches("$version", "$range") === $expected',
({ version, range, expected }) => {
expect(ivy.matches(version, range)).toBe(expected);
}
);
test.each`
currentValue | rangeStrategy | currentVersion | newVersion | expected
${'1'} | ${'auto'} | ${'1'} | ${'1.1'} | ${'1.1'}
${'[1.2.3,]'} | ${'auto'} | ${'1.2.3'} | ${'1.2.4'} | ${'[1.2.3,]'}
${'[1.2.3]'} | ${'pin'} | ${'1.2.3'} | ${'1.2.4'} | ${'1.2.4'}
${'[1.0.0,1.2.3]'} | ${'pin'} | ${'1.0.0'} | ${'1.2.4'} | ${'1.2.4'}
${'[1.0.0,1.2.23]'} | ${'pin'} | ${'1.0.0'} | ${'1.2.23'} | ${'1.2.23'}
${'(,1.0]'} | ${'pin'} | ${'0.0.1'} | ${'2.0'} | ${'2.0'}
${'],1.0]'} | ${'pin'} | ${'0.0.1'} | ${'2.0'} | ${'2.0'}
${'(,1.0)'} | ${'pin'} | ${'0.1'} | ${'2.0'} | ${'2.0'}
${'],1.0['} | ${'pin'} | ${'2.0'} | ${'],2.0['} | ${'],2.0['}
${'[1.0,1.2],[1.3,1.5)'} | ${'pin'} | ${'1.0'} | ${'1.2.4'} | ${'1.2.4'}
${'[1.0,1.2],[1.3,1.5['} | ${'pin'} | ${'1.0'} | ${'1.2.4'} | ${'1.2.4'}
${'[1.2.3,)'} | ${'pin'} | ${'1.2.3'} | ${'1.2.4'} | ${'1.2.4'}
${'[1.2.3,['} | ${'pin'} | ${'1.2.3'} | ${'1.2.4'} | ${'1.2.4'}
${'latest.integration'} | ${'pin'} | ${'1.0'} | ${'2.0'} | ${'2.0'}
${'latest'} | ${'pin'} | ${'1.0'} | ${'2.0'} | ${'2.0'}
`(
'getNewValue("$currentValue", "$rangeStrategy", "$currentVersion", "$newVersion") === "$expected"',
({ currentValue, rangeStrategy, currentVersion, newVersion, expected }) => {
const res = ivy.getNewValue({
currentValue,
rangeStrategy,
currentVersion,
newVersion,
});
expect(res).toEqual(expected);
}
);
test.each`
versions | range | expected
${['0', '1', '2']} | ${'(,2)'} | ${'1'}
`(
'getSatisfyingVersion($versions, "$range") === $expected',
({ versions, range, expected }) => {
expect(ivy.getSatisfyingVersion(versions, range)).toBe(expected);
}
);
});