fix crate::version::tests failing
This commit is contained in:
parent
c0b10a8a32
commit
9323f1ab3b
1 changed files with 17 additions and 7 deletions
|
|
@ -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),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue