Skip to content

Commit 2a8b2a2

Browse files
committed
refactor: improve version check and add tests
1 parent 57b7b90 commit 2a8b2a2

File tree

1 file changed

+24
-11
lines changed

1 file changed

+24
-11
lines changed

src/bsconfig.rs

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -244,17 +244,11 @@ pub fn read(path: String) -> Config {
244244
}
245245

246246
fn check_if_rescript11_or_higher(version: &str) -> bool {
247-
// Non stable rescript versions might contain non-numeric characters
248-
let filter_non_number_chars = |s: &str| s.chars().filter(|c| c.is_numeric()).collect::<String>();
249-
250-
version
251-
.split('.')
252-
.next()
253-
.map(filter_non_number_chars)
254-
.unwrap()
255-
.parse::<usize>()
256-
.unwrap()
257-
>= 11
247+
if let Some(major) = version.split('.').next().and_then(|s| s.parse::<usize>().ok()) {
248+
major >= 11
249+
} else {
250+
false
251+
}
258252
}
259253

260254
fn namespace_from_package_name(package_name: &str) -> String {
@@ -433,4 +427,23 @@ mod tests {
433427
assert_eq!(config.gentype_config.is_some(), true);
434428
assert_eq!(config.get_gentype_arg(), vec!["-bs-gentype".to_string()]);
435429
}
430+
431+
#[test]
432+
fn test_check_if_rescript11_or_higher() {
433+
assert_eq!(check_if_rescript11_or_higher("11.0.0"), true);
434+
assert_eq!(check_if_rescript11_or_higher("11.0.1"), true);
435+
assert_eq!(check_if_rescript11_or_higher("11.1.0"), true);
436+
437+
assert_eq!(check_if_rescript11_or_higher("12.0.0"), true);
438+
439+
assert_eq!(check_if_rescript11_or_higher("10.0.0"), false);
440+
assert_eq!(check_if_rescript11_or_higher("9.0.0"), false);
441+
}
442+
443+
#[test]
444+
fn test_check_if_rescript11_or_higher_misc() {
445+
assert_eq!(check_if_rescript11_or_higher("11"), true);
446+
assert_eq!(check_if_rescript11_or_higher("*"), false);
447+
assert_eq!(check_if_rescript11_or_higher("12.0.0-alpha.4"), true);
448+
}
436449
}

0 commit comments

Comments
 (0)