fix crate::version::tests failing

This commit is contained in:
do butterflies cry? 2026-03-18 18:44:38 +10:00
parent c0b10a8a32
commit 9323f1ab3b
Signed by: cry
GPG key ID: F68745A836CA0412

View file

@ -46,15 +46,15 @@ impl NixVersion {
/// # Examples /// # Examples
/// ///
/// ``` /// ```
/// use nixide::NixVersion::parse; /// use nixide::NixVersion;
/// ///
/// assert_eq!(parse("2.26"), NixVersion::new(2, 26, 0, false)); /// assert_eq!(NixVersion::parse("2.26"), Ok(NixVersion::new(2, 26, 0, false)));
/// assert_eq!(parse("2.33.0pre"), NixVersion::new(2, 33, 0, true)); /// assert_eq!(NixVersion::parse("2.33.0pre"), Ok(NixVersion::new(2, 33, 0, true)));
/// assert_eq!(parse("2.33"), NixVersion::new(2, 33, 0, false)); /// assert_eq!(NixVersion::parse("2.33"), Ok(NixVersion::new(2, 33, 0, false)));
/// assert_eq!(parse("2.33.1"), NixVersion::new(2, 33, 1, false)); /// assert_eq!(NixVersion::parse("2.33.1"), Ok(NixVersion::new(2, 33, 1, false)));
/// ///
/// // Pre-release versions sort before stable /// // Pre-release versions sort before stable
/// assert!(parse("2.33.0pre") < parse("2.33")); /// assert!(NixVersion::parse("2.33.0pre").unwrap() < NixVersion::parse("2.33").unwrap());
/// ``` /// ```
pub fn parse(version_str: &str) -> Result<Self, ParseIntError> { pub fn parse(version_str: &str) -> Result<Self, ParseIntError> {
let parts = version_str.split('.').collect::<Vec<&str>>(); let parts = version_str.split('.').collect::<Vec<&str>>();
@ -62,7 +62,17 @@ impl NixVersion {
let minor = parts[1].parse::<u32>()?; let minor = parts[1].parse::<u32>()?;
let (patch, is_prerelease) = match parts.get(2) { let (patch, is_prerelease) = match parts.get(2) {
Some(s) => (s[..s.len() - 3].parse::<u32>()?, s.ends_with("pre")), Some(s) => {
let length = s.len();
let mut offset = length;
if length > 3 {
offset = offset.saturating_sub(3)
}
(
s[..offset].parse::<u32>()?, // patch
length > 3 && s.ends_with("pre"), // is_prerelease
)
}
None => (0, false), None => (0, false),
}; };