From 5262937285e72419c6576ae1595d43f23e0c7b9d Mon Sep 17 00:00:00 2001 From: David Sherret Date: Fri, 2 Sep 2022 13:06:42 -0400 Subject: fix(npm): respect `latest` dist tag for getting current version (#15746) --- test_util/src/npm.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'test_util/src/npm.rs') diff --git a/test_util/src/npm.rs b/test_util/src/npm.rs index fad59e3b8..6e393d835 100644 --- a/test_util/src/npm.rs +++ b/test_util/src/npm.rs @@ -71,6 +71,7 @@ fn get_npm_package(package_name: &str) -> Result> { // read all the package's versions let mut tarballs = HashMap::new(); let mut versions = serde_json::Map::new(); + let mut latest_version = semver::Version::parse("0.0.0").unwrap(); for entry in fs::read_dir(&package_folder)? { let entry = entry?; let file_type = entry.file_type()?; @@ -134,13 +135,21 @@ fn get_npm_package(package_name: &str) -> Result> { let mut version_info: serde_json::Map = serde_json::from_str(&package_json_text)?; version_info.insert("dist".to_string(), dist.into()); - versions.insert(version, version_info.into()); + versions.insert(version.clone(), version_info.into()); + let version = semver::Version::parse(&version)?; + if version.cmp(&latest_version).is_gt() { + latest_version = version; + } } + let mut dist_tags = serde_json::Map::new(); + dist_tags.insert("latest".to_string(), latest_version.to_string().into()); + // create the registry file for this package let mut registry_file = serde_json::Map::new(); registry_file.insert("name".to_string(), package_name.to_string().into()); registry_file.insert("versions".to_string(), versions.into()); + registry_file.insert("dist-tags".to_string(), dist_tags.into()); Ok(Some(CustomNpmPackage { registry_file: serde_json::to_string(®istry_file).unwrap(), tarballs, -- cgit v1.2.3