@@ -4,6 +4,8 @@ import os = require('os');
4
4
import path = require( 'path' ) ;
5
5
import hc = require( '@actions/http-client' ) ;
6
6
7
+ import each from 'jest-each' ;
8
+
7
9
const toolDir = path . join ( __dirname , 'runner' , 'tools' ) ;
8
10
const tempDir = path . join ( __dirname , 'runner' , 'temp' ) ;
9
11
@@ -14,6 +16,61 @@ import * as installer from '../src/installer';
14
16
15
17
const IS_WINDOWS = process . platform === 'win32' ;
16
18
19
+ describe ( 'version tests' , ( ) => {
20
+ each ( [ '3.1.999' , '3.1.101-preview.3' ] ) . test (
21
+ "Exact version '%s' should be the same" ,
22
+ vers => {
23
+ let versInfo = new installer . DotNetVersionInfo ( vers ) ;
24
+
25
+ expect ( versInfo . isExactVersion ( ) ) . toBe ( true ) ;
26
+ expect ( versInfo . version ( ) ) . toBe ( vers ) ;
27
+ }
28
+ ) ;
29
+
30
+ each ( [ [ '3.1.x' , '3.1' ] , [ '1.1.*' , '1.1' ] , [ '2.0' , '2.0' ] ] ) . test (
31
+ "Generic version '%s' should be '%s'" ,
32
+ ( vers , resVers ) => {
33
+ let versInfo = new installer . DotNetVersionInfo ( vers ) ;
34
+
35
+ expect ( versInfo . isExactVersion ( ) ) . toBe ( false ) ;
36
+ expect ( versInfo . version ( ) ) . toBe ( resVers ) ;
37
+ }
38
+ ) ;
39
+
40
+ each ( [
41
+ '' ,
42
+ '.' ,
43
+ '..' ,
44
+ ' . ' ,
45
+ '. ' ,
46
+ ' .' ,
47
+ ' . . ' ,
48
+ ' .. ' ,
49
+ ' . ' ,
50
+ '-1.-1' ,
51
+ '-1' ,
52
+ '-1.-1.-1' ,
53
+ '..3' ,
54
+ '1..3' ,
55
+ '1..' ,
56
+ '.2.3' ,
57
+ '.2.x' ,
58
+ '1' ,
59
+ '2.x' ,
60
+ '*.*.1' ,
61
+ '*.1' ,
62
+ '*.' ,
63
+ '1.2.' ,
64
+ '1.2.-abc' ,
65
+ 'a.b' ,
66
+ 'a.b.c' ,
67
+ 'a.b.c-preview' ,
68
+ ' 0 . 1 . 2 '
69
+ ] ) . test ( "Malformed version '%s' should throw" , vers => {
70
+ expect ( ( ) => new installer . DotNetVersionInfo ( vers ) ) . toThrow ( ) ;
71
+ } ) ;
72
+ } ) ;
73
+
17
74
describe ( 'installer tests' , ( ) => {
18
75
beforeAll ( async ( ) => {
19
76
await io . rmRF ( toolDir ) ;
@@ -29,6 +86,51 @@ describe('installer tests', () => {
29
86
}
30
87
} , 100000 ) ;
31
88
89
+ it ( 'Resolving a normal generic version works' , async ( ) => {
90
+ const dotnetInstaller = new installer . DotnetCoreInstaller ( '3.1.x' ) ;
91
+ let versInfo = await dotnetInstaller . resolveInfos (
92
+ [ 'win-x64' ] ,
93
+ new installer . DotNetVersionInfo ( '3.1.x' )
94
+ ) ;
95
+
96
+ expect ( versInfo . resolvedVersion . startsWith ( '3.1.' ) ) ;
97
+ } , 100000 ) ;
98
+
99
+ it ( 'Resolving a nonexistent generic version fails' , async ( ) => {
100
+ const dotnetInstaller = new installer . DotnetCoreInstaller ( '999.1.x' ) ;
101
+ try {
102
+ await dotnetInstaller . resolveInfos (
103
+ [ 'win-x64' ] ,
104
+ new installer . DotNetVersionInfo ( '999.1.x' )
105
+ ) ;
106
+ fail ( ) ;
107
+ } catch {
108
+ expect ( true ) ;
109
+ }
110
+ } , 100000 ) ;
111
+
112
+ it ( 'Resolving a exact stable version works' , async ( ) => {
113
+ const dotnetInstaller = new installer . DotnetCoreInstaller ( '3.1.201' ) ;
114
+ let versInfo = await dotnetInstaller . resolveInfos (
115
+ [ 'win-x64' ] ,
116
+ new installer . DotNetVersionInfo ( '3.1.201' )
117
+ ) ;
118
+
119
+ expect ( versInfo . resolvedVersion ) . toBe ( '3.1.201' ) ;
120
+ } , 100000 ) ;
121
+
122
+ it ( 'Resolving a exact preview version works' , async ( ) => {
123
+ const dotnetInstaller = new installer . DotnetCoreInstaller (
124
+ '5.0.0-preview.4'
125
+ ) ;
126
+ let versInfo = await dotnetInstaller . resolveInfos (
127
+ [ 'win-x64' ] ,
128
+ new installer . DotNetVersionInfo ( '5.0.0-preview.4' )
129
+ ) ;
130
+
131
+ expect ( versInfo . resolvedVersion ) . toBe ( '5.0.0-preview.4' ) ;
132
+ } , 100000 ) ;
133
+
32
134
it ( 'Acquires version of dotnet if no matching version is installed' , async ( ) => {
33
135
await getDotnet ( '2.2.205' ) ;
34
136
const dotnetDir = path . join ( toolDir , 'dncs' , '2.2.205' , os . arch ( ) ) ;
@@ -39,7 +141,7 @@ describe('installer tests', () => {
39
141
} else {
40
142
expect ( fs . existsSync ( path . join ( dotnetDir , 'dotnet' ) ) ) . toBe ( true ) ;
41
143
}
42
- } , 100000 ) ;
144
+ } , 400000 ) ; //This needs some time to download on "slower" internet connections
43
145
44
146
it ( 'Acquires version of dotnet if no matching version is installed' , async ( ) => {
45
147
const dotnetDir = path . join ( toolDir , 'dncs' , '2.2.105' , os . arch ( ) ) ;
0 commit comments