Skip to content

Commit

Permalink
Merge pull request #209 from hone/new-parser
Browse files Browse the repository at this point in the history
semver-parser 0.10.0
  • Loading branch information
steveklabnik committed Sep 24, 2020
2 parents db822b7 + 439bfe8 commit a3a3d26
Show file tree
Hide file tree
Showing 5 changed files with 344 additions and 277 deletions.
6 changes: 5 additions & 1 deletion Cargo.toml
Expand Up @@ -15,10 +15,14 @@ keywords = ["version", "semantic", "compare"]
categories = ["development-tools", "parser-implementations"]

[dependencies]
semver-parser = "0.7.0"
semver-parser = "0.10.0"

serde = { version = "1.0", optional = true }
diesel = { version = "1.1", optional = true }

[patch.crates-io]
semver-parser = { git = "https://github.com/hone/semver-parser", branch = "npm-rename" }

[features]
default = []

Expand Down
3 changes: 2 additions & 1 deletion src/lib.rs
Expand Up @@ -137,7 +137,7 @@
//! use semver::VersionReq;
//!
//! # fn try_compare() -> Result<(), Box<::std::error::Error>> {
//! let r = VersionReq::parse(">= 1.0.0")?;
//! let r = VersionReq::parse(">=1.0.0")?;
//! let v = Version::parse("1.0.0")?;
//!
//! assert!(r.to_string() == ">=1.0.0".to_string());
Expand Down Expand Up @@ -207,6 +207,7 @@ extern crate diesel;
// We take the common approach of keeping our own module system private, and
// just re-exporting the interface that we want.

pub use semver_parser::Compat;
pub use version::Identifier::{AlphaNumeric, Numeric};
pub use version::{Identifier, SemVerError, Version};
pub use version_req::{ReqParseError, VersionReq};
Expand Down
50 changes: 26 additions & 24 deletions src/version.rs
Expand Up @@ -237,7 +237,7 @@ impl Version {

match res {
// Convert plain String error into proper ParseError
Err(e) => Err(SemVerError::ParseError(e)),
Err(e) => Err(SemVerError::ParseError(e.to_string())),
Ok(v) => Ok(From::from(v)),
}
}
Expand Down Expand Up @@ -394,27 +394,18 @@ mod tests {
return Err(SemVerError::ParseError(e.to_string()));
}

assert_eq!(
Version::parse(""),
parse_error("Error parsing major identifier")
);
assert_eq!(
Version::parse(" "),
parse_error("Error parsing major identifier")
);
assert_eq!(Version::parse("1"), parse_error("Expected dot"));
assert_eq!(Version::parse("1.2"), parse_error("Expected dot"));
assert_eq!(
Version::parse("1.2.3-"),
parse_error("Error parsing prerelease")
);
assert_eq!(Version::parse(""), parse_error("expected more input"));
assert_eq!(Version::parse(" "), parse_error("expected more input"));
assert_eq!(Version::parse("1"), parse_error("expected more input"));
assert_eq!(Version::parse("1.2"), parse_error("expected more input"));
assert_eq!(Version::parse("1.2.3-"), parse_error("expected more input"));
assert_eq!(
Version::parse("a.b.c"),
parse_error("Error parsing major identifier")
parse_error("encountered unexpected token: AlphaNumeric(\"a\")")
);
assert_eq!(
Version::parse("1.2.3 abc"),
parse_error("Extra junk after valid version: abc")
parse_error("expected end of input, but got: [AlphaNumeric(\"abc\")]")
);

assert_eq!(
Expand Down Expand Up @@ -531,6 +522,17 @@ mod tests {
build: vec![Identifier::AlphaNumeric(String::from("0851523"))],
})
);
// for https://nodejs.org/dist/index.json, where some older npm versions are "1.1.0-beta-10"
assert_eq!(
Version::parse("1.1.0-beta-10"),
Ok(Version {
major: 1,
minor: 1,
patch: 0,
pre: vec![Identifier::AlphaNumeric(String::from("beta-10")),],
build: Vec::new(),
})
);
}

#[test]
Expand Down Expand Up @@ -854,18 +856,18 @@ mod tests {
return Err(SemVerError::ParseError(e.to_string()));
}

assert_eq!("".parse(), parse_error("Error parsing major identifier"));
assert_eq!(" ".parse(), parse_error("Error parsing major identifier"));
assert_eq!("1".parse(), parse_error("Expected dot"));
assert_eq!("1.2".parse(), parse_error("Expected dot"));
assert_eq!("1.2.3-".parse(), parse_error("Error parsing prerelease"));
assert_eq!("".parse(), parse_error("expected more input"));
assert_eq!(" ".parse(), parse_error("expected more input"));
assert_eq!("1".parse(), parse_error("expected more input"));
assert_eq!("1.2".parse(), parse_error("expected more input"));
assert_eq!("1.2.3-".parse(), parse_error("expected more input"));
assert_eq!(
"a.b.c".parse(),
parse_error("Error parsing major identifier")
parse_error("encountered unexpected token: AlphaNumeric(\"a\")")
);
assert_eq!(
"1.2.3 abc".parse(),
parse_error("Extra junk after valid version: abc")
parse_error("expected end of input, but got: [AlphaNumeric(\"abc\")]")
);
}
}

0 comments on commit a3a3d26

Please sign in to comment.