diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-11-04 15:52:25 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-11-04 16:42:24 +0100 |
commit | 7bbcca0356795ac60bf7761819b56430e0905a3c (patch) | |
tree | 393dc3278f0675453137e88d6e6e8e4214df0f79 /src/repository/repository.rs | |
parent | 8263be2e45c1b1d7245d1816c254f5ca2a2c7860 (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.rs | 56 |
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(); |