Skip to content

Commit 1f5e11d

Browse files
authored
Select latest lts node version (#1258)
* select latest lts node version when find latest version that matches range * add test
1 parent c19175e commit 1f5e11d

File tree

3 files changed

+28
-8
lines changed

3 files changed

+28
-8
lines changed

src/providers/node/mod.rs

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -634,14 +634,18 @@ fn parse_node_version_into_pkg(node_version: &str) -> String {
634634
eprintln!("Warning: node version {node_version} is not valid, using default node version {default_node_pkg_name}");
635635
Range::parse(DEFAULT_NODE_VERSION.to_string()).unwrap()
636636
});
637-
let mut available_node_versions = AVAILABLE_NODE_VERSIONS.to_vec();
637+
let mut available_lts_node_versions = AVAILABLE_NODE_VERSIONS
638+
.iter()
639+
.filter(|v| *v % 2 == 0)
640+
.collect::<Vec<_>>();
641+
638642
// use newest node version first
639-
available_node_versions.sort_by(|a, b| b.cmp(a));
640-
for version_number in available_node_versions {
643+
available_lts_node_versions.sort_by(|a, b| b.cmp(a));
644+
for version_number in available_lts_node_versions {
641645
let version_range_string = format!("{version_number}.x.x");
642646
let version_range: Range = version_range_string.parse().unwrap();
643647
if version_range.allows_any(&range) {
644-
return version_number_to_pkg(version_number);
648+
return version_number_to_pkg(*version_number);
645649
}
646650
}
647651
default_node_pkg_name
@@ -721,6 +725,24 @@ mod test {
721725
Ok(())
722726
}
723727

728+
#[test]
729+
fn test_latest_lts_version() -> Result<()> {
730+
assert_eq!(
731+
NodeProvider::get_nix_node_pkg(
732+
&PackageJson {
733+
name: Some(String::default()),
734+
engines: Some(engines_node(">=18")),
735+
..Default::default()
736+
},
737+
&App::new("examples/node")?,
738+
&Environment::default()
739+
)?,
740+
Pkg::new(version_number_to_pkg(22).as_str())
741+
);
742+
743+
Ok(())
744+
}
745+
724746
#[test]
725747
fn test_simple_engine() -> Result<()> {
726748
assert_eq!(

tests/snapshots/generate_plan_tests__node_pnpm_corepack.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
source: tests/generate_plan_tests.rs
33
expression: plan
4-
snapshot_kind: text
54
---
65
{
76
"providers": [],
@@ -44,7 +43,7 @@ snapshot_kind: text
4443
"setup": {
4544
"name": "setup",
4645
"nixPkgs": [
47-
"nodejs_23",
46+
"nodejs_22",
4847
"pnpm-9_x"
4948
],
5049
"nixOverlays": [

tests/snapshots/generate_plan_tests__node_turborepo.snap

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
---
22
source: tests/generate_plan_tests.rs
33
expression: plan
4-
snapshot_kind: text
54
---
65
{
76
"providers": [],
@@ -45,7 +44,7 @@ snapshot_kind: text
4544
"setup": {
4645
"name": "setup",
4746
"nixPkgs": [
48-
"nodejs_23",
47+
"nodejs_22",
4948
"npm-8_x"
5049
],
5150
"nixOverlays": [

0 commit comments

Comments
 (0)