@@ -27,49 +27,61 @@ interface ClusterTestOptions<M extends RedisModules, S extends RedisScripts> ext
2727 numberOfNodes ?: number ;
2828}
2929
30+ interface Version {
31+ string : string ;
32+ numbers : Array < number > ;
33+ }
34+
3035export default class TestUtils {
31- static #getVersion( argumentName : string , defaultVersion : string ) : Array < number > {
36+ static #getVersion( argumentName : string , defaultVersion : string ) : Version {
3237 return yargs ( hideBin ( process . argv ) )
3338 . option ( argumentName , {
3439 type : 'string' ,
3540 default : defaultVersion
3641 } )
3742 . 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+ }
4351
44- return value ;
45- } ) ;
52+ return value ;
53+ } )
54+ } ;
4655 } )
4756 . demandOption ( argumentName )
4857 . parseSync ( ) [ argumentName ] ;
4958 }
5059
60+ readonly #VERSION_NUMBERS: Array < number > ;
5161 readonly #DOCKER_IMAGE: RedisServerDockerConfig ;
5262
5363 constructor ( config : TestUtilsConfig ) {
64+ const { string, numbers } = TestUtils . #getVersion( config . dockerImageVersionArgument , config . defaultDockerVersion ) ;
65+ this . #VERSION_NUMBERS = numbers ;
5466 this . #DOCKER_IMAGE = {
5567 image : config . dockerImageName ,
56- version : TestUtils . #getVersion ( config . dockerImageVersionArgument , config . defaultDockerVersion )
68+ version : string
5769 } ;
5870 }
5971
6072 isVersionGreaterThan ( minimumVersion : Array < number > | undefined ) : boolean {
6173 if ( minimumVersion === undefined ) return true ;
6274
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 ;
6476 for ( let i = 0 ; i < lastIndex ; i ++ ) {
65- if ( this . #DOCKER_IMAGE . version [ i ] > minimumVersion [ i ] ) {
77+ if ( this . #VERSION_NUMBERS [ i ] > minimumVersion [ i ] ) {
6678 return true ;
67- } else if ( minimumVersion [ i ] > this . #DOCKER_IMAGE . version [ i ] ) {
79+ } else if ( minimumVersion [ i ] > this . #VERSION_NUMBERS [ i ] ) {
6880 return false ;
6981 }
7082 }
7183
72- return this . #DOCKER_IMAGE . version [ lastIndex ] >= minimumVersion [ lastIndex ] ;
84+ return this . #VERSION_NUMBERS [ lastIndex ] >= minimumVersion [ lastIndex ] ;
7385 }
7486
7587 isVersionGreaterThanHook ( minimumVersion : Array < number > | undefined ) : void {
0 commit comments