@@ -27,49 +27,61 @@ interface ClusterTestOptions<M extends RedisModules, S extends RedisScripts> ext
27
27
numberOfNodes ?: number ;
28
28
}
29
29
30
+ interface Version {
31
+ string : string ;
32
+ numbers : Array < number > ;
33
+ }
34
+
30
35
export default class TestUtils {
31
- static #getVersion( argumentName : string , defaultVersion : string ) : Array < number > {
36
+ static #getVersion( argumentName : string , defaultVersion : string ) : Version {
32
37
return yargs ( hideBin ( process . argv ) )
33
38
. option ( argumentName , {
34
39
type : 'string' ,
35
40
default : defaultVersion
36
41
} )
37
42
. coerce ( argumentName , ( arg : string ) => {
38
- return arg . split ( '.' ) . map ( x => {
39
- const value = Number ( x ) ;
40
- if ( Number . isNaN ( value ) ) {
41
- throw new TypeError ( `${ arg } is not a valid redis version` ) ;
42
- }
43
+ const indexOfDash = arg . indexOf ( '-' ) ;
44
+ return {
45
+ string : arg ,
46
+ numbers : ( indexOfDash === - 1 ? arg : arg . substring ( 0 , indexOfDash ) ) . split ( '.' ) . map ( x => {
47
+ const value = Number ( x ) ;
48
+ if ( Number . isNaN ( value ) ) {
49
+ throw new TypeError ( `${ arg } is not a valid redis version` ) ;
50
+ }
43
51
44
- return value ;
45
- } ) ;
52
+ return value ;
53
+ } )
54
+ } ;
46
55
} )
47
56
. demandOption ( argumentName )
48
57
. parseSync ( ) [ argumentName ] ;
49
58
}
50
59
60
+ readonly #VERSION_NUMBERS: Array < number > ;
51
61
readonly #DOCKER_IMAGE: RedisServerDockerConfig ;
52
62
53
63
constructor ( config : TestUtilsConfig ) {
64
+ const { string, numbers } = TestUtils . #getVersion( config . dockerImageVersionArgument , config . defaultDockerVersion ) ;
65
+ this . #VERSION_NUMBERS = numbers ;
54
66
this . #DOCKER_IMAGE = {
55
67
image : config . dockerImageName ,
56
- version : TestUtils . #getVersion ( config . dockerImageVersionArgument , config . defaultDockerVersion )
68
+ version : string
57
69
} ;
58
70
}
59
71
60
72
isVersionGreaterThan ( minimumVersion : Array < number > | undefined ) : boolean {
61
73
if ( minimumVersion === undefined ) return true ;
62
74
63
- const lastIndex = Math . min ( this . #DOCKER_IMAGE . version . length , minimumVersion . length ) - 1 ;
75
+ const lastIndex = Math . min ( this . #VERSION_NUMBERS . length , minimumVersion . length ) - 1 ;
64
76
for ( let i = 0 ; i < lastIndex ; i ++ ) {
65
- if ( this . #DOCKER_IMAGE . version [ i ] > minimumVersion [ i ] ) {
77
+ if ( this . #VERSION_NUMBERS [ i ] > minimumVersion [ i ] ) {
66
78
return true ;
67
- } else if ( minimumVersion [ i ] > this . #DOCKER_IMAGE . version [ i ] ) {
79
+ } else if ( minimumVersion [ i ] > this . #VERSION_NUMBERS [ i ] ) {
68
80
return false ;
69
81
}
70
82
}
71
83
72
- return this . #DOCKER_IMAGE . version [ lastIndex ] >= minimumVersion [ lastIndex ] ;
84
+ return this . #VERSION_NUMBERS [ lastIndex ] >= minimumVersion [ lastIndex ] ;
73
85
}
74
86
75
87
isVersionGreaterThanHook ( minimumVersion : Array < number > | undefined ) : void {
0 commit comments