1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) Gitpod. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { equal } from 'assert' ;
6
+ import Log from './common/logger' ;
7
+ import { getGitpodVersion , GitpodVersion , isFeatureSupported } from './featureSupport' ;
8
+
9
+ describe ( 'feature support' , ( ) => {
10
+ it ( 'isFeatureSupported with versions' , ( ) => {
11
+ const cases : Array < { str ?: string ; version : GitpodVersion ; supported : boolean } > = [
12
+ { version : new GitpodVersion ( 'release-2022.06.1.7' ) , str : '2022.6.1' , supported : false } ,
13
+ { version : new GitpodVersion ( 'release-2022.06.1.0' ) , str : '2022.6.1' , supported : false } ,
14
+ { version : new GitpodVersion ( 'release-2022.77.1.0' ) , str : '2022.77.1' , supported : true } ,
15
+ { version : new GitpodVersion ( 'release-0.0.0.0' ) , str : '0.0.0' , supported : false } ,
16
+ { version : new GitpodVersion ( 'abcd.0123.0.0.0' ) , str : '0.0.0' , supported : false } ,
17
+ { version : new GitpodVersion ( 'abcd.123.0.0' ) , supported : false } ,
18
+ { version : new GitpodVersion ( '123' ) , supported : false } ,
19
+ { version : new GitpodVersion ( '123..' ) , supported : false } ,
20
+ { version : new GitpodVersion ( '123.0' ) , supported : false } ,
21
+ { version : new GitpodVersion ( '123.0.1' ) , supported : false } ,
22
+ { version : new GitpodVersion ( '9123.0.1' ) , supported : true } ,
23
+ { version : new GitpodVersion ( ) , str : '0.0.0' , supported : false } ,
24
+ { version : GitpodVersion . Max , str : GitpodVersion . MAX_VERSION , supported : true } ,
25
+ { version : GitpodVersion . Min , str : GitpodVersion . MIN_VERSION , supported : false } ,
26
+
27
+ // SaaS is processed in `getOrFetchVersionInfo` function
28
+ { version : new GitpodVersion ( 'main.123' ) , supported : false } ,
29
+ { version : new GitpodVersion ( 'main.9999' ) , supported : false } ,
30
+ ] ;
31
+ for ( let i = 0 ; i < cases . length ; i ++ ) {
32
+ const { version, str, supported } = cases [ i ] ;
33
+ equal ( isFeatureSupported ( version , 'localHeartbeat' ) , supported , `isFeatureSupported index: ${ i } ` ) ;
34
+ if ( str ) {
35
+ equal ( version . version , str , `version check index: ${ i } ` ) ;
36
+ }
37
+ }
38
+ } ) ;
39
+
40
+ describe ( 'fetch version info' , function ( ) {
41
+ this . timeout ( 10000 ) ;
42
+ // const logger = { info: console.log, error: console.error } as Log;
43
+ // @ts -ignore
44
+ const logger = { info : ( ...args : any ) => { } , error : ( ...args : any ) => { } } as Log ;
45
+
46
+ it . skip ( 'unknown host retry and fallback to min' , async ( ) => {
47
+ const version = await getGitpodVersion ( 'https://unknown.gitpod.io' , logger ) ;
48
+ equal ( version . version , GitpodVersion . Min . version ) ;
49
+ } ) ;
50
+
51
+ it ( 'SaaS Gitpod return max' , async ( ) => {
52
+ const version = await getGitpodVersion ( 'https://gitpod.io' , logger ) ;
53
+ equal ( version . version , GitpodVersion . Max . version ) ;
54
+ } ) ;
55
+ } ) ;
56
+ } ) ;
0 commit comments