Skip to content

Commit

Permalink
initial deprecation implementation
Browse files Browse the repository at this point in the history
This isn't the final one, but it works
  • Loading branch information
steveklabnik committed Oct 3, 2016
1 parent 68fb5ab commit aae8a45
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 4 deletions.
27 changes: 23 additions & 4 deletions src/version_req.rs
Original file line number Diff line number Diff line change
Expand Up @@ -200,10 +200,29 @@ impl VersionReq {
pub fn parse(input: &str) -> Result<VersionReq, ReqParseError> {
let res = semver_parser::range::parse(input);

match res {
// Convert plain String error into proper ParseError
Err(e) => Err(From::from(e)),
Ok(v) => Ok(From::from(v)),
if let Ok(v) = res {
return Ok(From::from(v));
}

return match VersionReq::parse_deprecated(input) {
Some(v) => {
// print warning

Ok(v)
}
None => Err(From::from(res.err().unwrap())),
}

}

fn parse_deprecated(version: &str) -> Option<VersionReq> {
return match version {
".*" => Some(VersionReq::any()),
"0.1.0." => Some(VersionReq::parse("0.1.0").unwrap()),
"0.3.1.3" => Some(VersionReq::parse("0.3.13").unwrap()),
"0.2*" => Some(VersionReq::parse("0.2.*").unwrap()),
"*.0" => Some(VersionReq::any()),
_ => None,
}
}

Expand Down
18 changes: 18 additions & 0 deletions tests/deprecation.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
extern crate semver;

#[test]
fn test_regressions() {
use semver::VersionReq;

let versions = [
".*",
"0.1.0.",
"0.3.1.3",
"0.2*",
"*.0",
];

for version in versions.iter() {
assert!(VersionReq::parse(version).is_ok(), "failed: {}", version);
}
}

0 comments on commit aae8a45

Please sign in to comment.