Tilføjet en semver comparer
ci/woodpecker/push/woodpecker Pipeline was successful
Details
ci/woodpecker/push/woodpecker Pipeline was successful
Details
This commit is contained in:
parent
89a57d196b
commit
3e595f69a0
|
@ -12,3 +12,4 @@ config = { version = "0.13.1", features = ["toml"] }
|
|||
serde = { version = "1.0", features = ["derive"]}
|
||||
clap = { version = "3.2.21", features = ["derive", "cargo"] }
|
||||
reqwest = { version = "0.11.12", features = ["blocking", "json"] }
|
||||
semver = { version = "1.0" }
|
|
@ -88,24 +88,23 @@ JOIN VCSTYPES V ON O.vcs_type = V.vcs_type";
|
|||
}
|
||||
|
||||
mod versioning {
|
||||
trait VersionComparer {
|
||||
fn compare(v1: &str, v2: &str) -> Comp;
|
||||
use semver::Version;
|
||||
use std::cmp::Ordering;
|
||||
|
||||
pub trait VersionComparer {
|
||||
fn compare(&self, v1: &str, v2: &str) -> Ordering;
|
||||
}
|
||||
|
||||
pub struct GithubDefaultVersionComparer;
|
||||
pub struct SemverVersionComparer;
|
||||
|
||||
impl VersionComparer for GithubDefaultVersionComparer {
|
||||
fn compare(v1: &str, v2: &str) -> Comp {
|
||||
todo!()
|
||||
impl VersionComparer for SemverVersionComparer {
|
||||
fn compare(&self, v1: &str, v2: &str) -> Ordering {
|
||||
let v1 = Version::parse(v1).unwrap();
|
||||
let v2 = Version::parse(v2).unwrap();
|
||||
|
||||
v1.cmp(&v2)
|
||||
}
|
||||
}
|
||||
|
||||
// todo: rename this
|
||||
pub enum Comp {
|
||||
Left,
|
||||
Right,
|
||||
Equal,
|
||||
}
|
||||
}
|
||||
|
||||
pub mod models {
|
||||
|
@ -125,3 +124,30 @@ pub mod models {
|
|||
pub api_root_url: String,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use crate::request::versioning::{SemverVersionComparer, VersionComparer};
|
||||
use std::cmp::Ordering;
|
||||
|
||||
#[test]
|
||||
fn rest_equal_semver() {
|
||||
let comparer = SemverVersionComparer;
|
||||
let ordering = comparer.compare("1.2.3", "1.2.3");
|
||||
assert_eq!(ordering, Ordering::Equal);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rest_greater_semver() {
|
||||
let comparer = SemverVersionComparer;
|
||||
let ordering = comparer.compare("1.2.4", "1.2.3");
|
||||
assert_eq!(ordering, Ordering::Greater);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn rest_less_semver() {
|
||||
let comparer = SemverVersionComparer;
|
||||
let ordering = comparer.compare("1.2.3", "1.2.4");
|
||||
assert_eq!(ordering, Ordering::Less);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue