summaryrefslogtreecommitdiffstats
path: root/src/repository/repository.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-11-04 15:52:25 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-11-04 16:42:24 +0100
commit7bbcca0356795ac60bf7761819b56430e0905a3c (patch)
tree393dc3278f0675453137e88d6e6e8e4214df0f79 /src/repository/repository.rs
parent8263be2e45c1b1d7245d1816c254f5ca2a2c7860 (diff)
Remove all non-equality "Version constraint" implementation
This patch removes the idea of "version constraints" except for the equality constraint. This is due to the fact, that everything else might result in impurities. This might be reverted in the future and actual operators ("<" or ">" or ranges...) might be implemented. Thus, we keep the "=" equality sign as prefix for a version string, to be extensible here. This commit also fixes (automatically, because the implementation changed from the ground up) the issue that there was no difference between a version string and a version constraint string. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Diffstat (limited to 'src/repository/repository.rs')
-rw-r--r--src/repository/repository.rs56
1 files changed, 4 insertions, 52 deletions
diff --git a/src/repository/repository.rs b/src/repository/repository.rs
index 7f60056..73f522c 100644
--- a/src/repository/repository.rs
+++ b/src/repository/repository.rs
@@ -97,12 +97,10 @@ impl Repository {
.collect()
}
- pub fn find_with_version_constraint<'a>(&'a self, name: &PackageName, vc: &PackageVersionConstraint) -> Vec<&'a Package> {
+ pub fn find_with_version<'a>(&'a self, name: &PackageName, vc: &PackageVersionConstraint) -> Vec<&'a Package> {
self.inner
.iter()
- .filter(|((n, v), _)| {
- n == name && vc.matches(v).map(|mtch| !mtch.is_false()).unwrap_or(false)
- })
+ .filter(|((n, v), _)| n == name && vc.matches(v))
.map(|(_, p)| p)
.collect()
}
@@ -169,52 +167,6 @@ pub mod tests {
assert!(!p.version_is_semver());
}
- #[test]
- fn test_find_with_vers_constr_any() {
- let mut btree = BTreeMap::new();
-
- {
- let name = "a";
- let vers = "1";
- let pack = package(name, vers, "https://rust-lang.org", "123");
- btree.insert((pname(name), pversion(vers)), pack);
- }
- {
- let name = "a";
- let vers = "2";
- let pack = package(name, vers, "https://rust-lang.org", "124");
- btree.insert((pname(name), pversion(vers)), pack);
- }
- {
- let name = "a";
- let vers = "3";
- let pack = package(name, vers, "https://rust-lang.org", "125");
- btree.insert((pname(name), pversion(vers)), pack);
- }
-
- let repo = Repository::from(btree);
-
- let constraint = PackageVersionConstraint::Any;
-
- let ps = repo.find_with_version_constraint(&pname("a"), &constraint);
- assert_eq!(ps.len(), 3);
-
- let p = ps.get(0).unwrap();
- assert_eq!(*p.name(), pname("a"));
- assert_eq!(*p.version(), pversion("1"));
- assert!(!p.version_is_semver());
-
- let p = ps.get(1).unwrap();
- assert_eq!(*p.name(), pname("a"));
- assert_eq!(*p.version(), pversion("2"));
- assert!(!p.version_is_semver());
-
- let p = ps.get(2).unwrap();
- assert_eq!(*p.name(), pname("a"));
- assert_eq!(*p.version(), pversion("3"));
- assert!(!p.version_is_semver());
- }
-
#[test]
fn test_find_with_vers_constr_exact() {
@@ -241,9 +193,9 @@ pub mod tests {
let repo = Repository::from(btree);
- let constraint = PackageVersionConstraint::Exact(pversion("2"));
+ let constraint = PackageVersionConstraint::from_version(String::from("="), pversion("2"));
- let ps = repo.find_with_version_constraint(&pname("a"), &constraint);
+ let ps = repo.find_with_version(&pname("a"), &constraint);
assert_eq!(ps.len(), 1);
let p = ps.get(0).unwrap();