diff options
-rw-r--r-- | src/package/dependency/mod.rs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/package/dependency/mod.rs b/src/package/dependency/mod.rs index e58d0a0..37cb82b 100644 --- a/src/package/dependency/mod.rs +++ b/src/package/dependency/mod.rs @@ -34,7 +34,7 @@ pub trait ParseDependency { lazy_static! { pub(in crate::package::dependency) static ref DEPENDENCY_PARSING_RE: Regex = - Regex::new("^(?P<name>[[:alpha:]]([[[:alnum:]]-_])*) (?P<version>([\\*=><])?[[:alnum:]]([[[:alnum:]][[:punct:]]])*)$").unwrap(); + Regex::new("^(?P<name>[[:alpha:]]([[[:alnum:]]\\.\\-_])*) (?P<version>([\\*=><])?[[:alnum:]]([[[:alnum:]][[:punct:]]])*)$").unwrap(); } /// Helper function for the actual implementation of the ParseDependency trait. @@ -116,4 +116,18 @@ mod tests { PackageVersionConstraint::from_version(String::from("="), exact("1b")) ); } + + #[test] + fn test_dependency_string_with_punctuation() { + let s = "foo-bar1.2.3 =0.123"; + let d = Dependency::from(String::from(s)); + + let (n, c) = d.parse_as_name_and_version().unwrap(); + + assert_eq!(n, name("foo-bar1.2.3")); + assert_eq!( + c, + PackageVersionConstraint::from_version(String::from("="), exact("0.123")) + ); + } } |