From 589f428b05d7a7bae1759f92e82d29b1281522db Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 13 Aug 2021 17:58:26 +0200 Subject: Fix: Allow punctuation (.-) in package name This patch fixes that punctuation (namingly dot and dash) are allowed in a package name. A testcase was added. Signed-off-by: Matthias Beyer --- src/package/dependency/mod.rs | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/package') 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[[:alpha:]]([[[:alnum:]]-_])*) (?P([\\*=><])?[[:alnum:]]([[[:alnum:]][[:punct:]]])*)$").unwrap(); + Regex::new("^(?P[[:alpha:]]([[[:alnum:]]\\.\\-_])*) (?P([\\*=><])?[[: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")) + ); + } } -- cgit v1.2.3