summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2021-08-13 17:58:26 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-08-31 08:49:42 +0200
commit2fdfa6e439bd501587b3e67e6436c9cceccde5e7 (patch)
tree1c92633c0349db4e7b95f8592b2017dbc67bd67f
parentd8931417f0ec1ada88dde1581557f82b6cf6a976 (diff)
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 <matthias.beyer@atos.net> (cherry picked from commit 589f428b05d7a7bae1759f92e82d29b1281522db)
-rw-r--r--src/package/dependency/mod.rs16
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"))
+ );
+ }
}