1
1
import { partial } from '../../../../../test/util' ;
2
+ import type { Release } from '../../../../modules/datasource/types' ;
2
3
import * as allVersioning from '../../../../modules/versioning' ;
3
4
import { filterVersions } from './filter' ;
4
5
import type { FilterConfig } from './types' ;
5
6
6
7
const versioning = allVersioning . get ( 'semver' ) ;
7
8
8
- const releases = [
9
- {
10
- version : '1.0.1' ,
11
- releaseTimestamp : '2021-01-01T00:00:01.000Z' ,
12
- } ,
13
- {
14
- version : '1.2.0' ,
15
- releaseTimestamp : '2021-01-03T00:00:00.000Z' ,
16
- } ,
17
- {
18
- version : '2.0.0' ,
19
- releaseTimestamp : '2021-01-05T00:00:00.000Z' ,
20
- } ,
21
- {
22
- version : '2.1.0' ,
23
- releaseTimestamp : '2021-01-07T00:00:00.000Z' ,
24
- } ,
25
- // for coverage
26
- {
27
- version : 'invalid.version' ,
28
- releaseTimestamp : '2021-01-07T00:00:00.000Z' ,
29
- } ,
30
- ] ;
31
-
32
9
describe ( 'workers/repository/process/lookup/filter' , ( ) => {
33
10
describe ( '.filterVersions()' , ( ) => {
34
11
it ( 'should filter versions allowed by semver syntax when allowedVersions is not valid version, range or pypi syntax' , ( ) => {
12
+ const releases = [
13
+ {
14
+ version : '1.0.1' ,
15
+ releaseTimestamp : '2021-01-01T00:00:01.000Z' ,
16
+ } ,
17
+ {
18
+ version : '1.2.0' ,
19
+ releaseTimestamp : '2021-01-03T00:00:00.000Z' ,
20
+ } ,
21
+ {
22
+ version : '2.0.0' ,
23
+ releaseTimestamp : '2021-01-05T00:00:00.000Z' ,
24
+ } ,
25
+ {
26
+ version : '2.1.0' ,
27
+ releaseTimestamp : '2021-01-07T00:00:00.000Z' ,
28
+ } ,
29
+ // for coverage
30
+ {
31
+ version : 'invalid.version' ,
32
+ releaseTimestamp : '2021-01-07T00:00:00.000Z' ,
33
+ } ,
34
+ ] satisfies Release [ ] ;
35
+
35
36
const config = partial < FilterConfig > ( {
36
37
ignoreUnstable : false ,
37
38
ignoreDeprecated : false ,
@@ -41,9 +42,6 @@ describe('workers/repository/process/lookup/filter', () => {
41
42
const currentVersion = '1.0.0' ;
42
43
const latestVersion = '2.0.0' ;
43
44
44
- jest . spyOn ( versioning , 'isVersion' ) . mockReturnValue ( true ) ;
45
- jest . spyOn ( versioning , 'isGreaterThan' ) . mockReturnValue ( true ) ;
46
-
47
45
const filteredVersions = filterVersions (
48
46
config ,
49
47
currentVersion ,
@@ -57,5 +55,31 @@ describe('workers/repository/process/lookup/filter', () => {
57
55
{ version : '2.1.0' , releaseTimestamp : '2021-01-07T00:00:00.000Z' } ,
58
56
] ) ;
59
57
} ) ;
58
+
59
+ it ( 'allows unstable major upgrades' , ( ) => {
60
+ const nodeVersioning = allVersioning . get ( 'node' ) ;
61
+
62
+ const releases = [
63
+ { version : '1.0.0-alpha' } ,
64
+ { version : '1.2.3-beta' } ,
65
+ ] satisfies Release [ ] ;
66
+
67
+ const config = partial < FilterConfig > ( {
68
+ ignoreUnstable : true ,
69
+ ignoreDeprecated : true ,
70
+ } ) ;
71
+ const currentVersion = '1.0.0-alpha' ;
72
+ const latestVersion = '1.2.3-beta' ;
73
+
74
+ const filteredVersions = filterVersions (
75
+ config ,
76
+ currentVersion ,
77
+ latestVersion ,
78
+ releases ,
79
+ nodeVersioning ,
80
+ ) ;
81
+
82
+ expect ( filteredVersions ) . toEqual ( [ { version : '1.2.3-beta' } ] ) ;
83
+ } ) ;
60
84
} ) ;
61
85
} ) ;
0 commit comments