@@ -19,18 +19,17 @@ enum BeaconNodeVersionError {
1919 } ,
2020}
2121
22- fn minimum_beacon_node_version ( name : & str ) -> Option < version:: SemVer > {
23- let name = name. to_lowercase ( ) ;
24- match name. as_str ( ) {
25- "lighthouse" => Some ( version:: SemVer :: parse ( "v8.0.0-rc.0" ) . unwrap ( ) ) ,
26- "teku" => Some ( version:: SemVer :: parse ( "v25.9.3" ) . unwrap ( ) ) ,
27- "lodestar" => Some ( version:: SemVer :: parse ( "v1.35.0-rc.1" ) . unwrap ( ) ) ,
28- "nimbus" => Some ( version:: SemVer :: parse ( "v25.9.2" ) . unwrap ( ) ) ,
29- "prysm" => Some ( version:: SemVer :: parse ( "v6.1.0" ) . unwrap ( ) ) ,
30- "grandine" => Some ( version:: SemVer :: parse ( "v2.0.0-rc0" ) . unwrap ( ) ) ,
31- _ => None ,
32- }
33- }
22+ static MINIMUM_BEACON_NODE_VERSIONS : LazyLock < std:: collections:: HashMap < & str , version:: SemVer > > =
23+ LazyLock :: new ( || {
24+ std:: collections:: HashMap :: from ( [
25+ ( "lighthouse" , version:: SemVer :: parse ( "v8.0.0-rc.0" ) . unwrap ( ) ) ,
26+ ( "teku" , version:: SemVer :: parse ( "v25.9.3" ) . unwrap ( ) ) ,
27+ ( "lodestar" , version:: SemVer :: parse ( "v1.35.0-rc.1" ) . unwrap ( ) ) ,
28+ ( "nimbus" , version:: SemVer :: parse ( "v25.9.2" ) . unwrap ( ) ) ,
29+ ( "prysm" , version:: SemVer :: parse ( "v6.1.0" ) . unwrap ( ) ) ,
30+ ( "grandine" , version:: SemVer :: parse ( "v2.0.0-rc0" ) . unwrap ( ) ) ,
31+ ] )
32+ } ) ;
3433
3534static VERSION_EXTRACT_REGEX : LazyLock < regex:: Regex > = LazyLock :: new ( || {
3635 regex:: Regex :: new ( r"^([^/]+)/v?([0-9]+\.[0-9]+\.[0-9]+)" ) . expect ( "invalid regex" )
@@ -49,7 +48,10 @@ fn check_beacon_node_version_status(bn_version: &str) -> Result<()> {
4948 . map_err ( |_| BeaconNodeVersionError :: InvalidFormat ) ?;
5049
5150 let name = & matches[ 1 ] ;
52- let minimum = minimum_beacon_node_version ( name) . ok_or ( BeaconNodeVersionError :: UnknownClient ) ?;
51+ let minimum = MINIMUM_BEACON_NODE_VERSIONS
52+ . get ( & name. to_lowercase ( ) . as_str ( ) )
53+ . ok_or ( BeaconNodeVersionError :: UnknownClient ) ?
54+ . clone ( ) ;
5355
5456 if client < minimum {
5557 return Err ( BeaconNodeVersionError :: TooOld { client, minimum } ) ;
@@ -146,7 +148,7 @@ mod tests {
146148
147149 for ( input, expected) in tc {
148150 let result = super :: check_beacon_node_version_status ( input) ;
149- assert_eq ! ( result, expected) ;
151+ assert_eq ! ( result, expected, "input = {input}" ) ;
150152 }
151153 }
152154}
0 commit comments