From 85bce281ff3908bb3384b43dcd4cc61f9cce8b81 Mon Sep 17 00:00:00 2001 From: Aravinth Manivannan Date: Wed, 27 Sep 2023 19:47:28 +0530 Subject: [PATCH] feat: user-facing compliance types --- src/complaince/mod.rs | 3 +++ src/complaince/result.rs | 11 +++++++++++ src/complaince/suite.rs | 24 ++++++++++++++++++++++++ src/complaince/target.rs | 15 +++++++++++++++ src/complaince/validator.rs | 9 +++++++++ 5 files changed, 62 insertions(+) create mode 100644 src/complaince/mod.rs create mode 100644 src/complaince/result.rs create mode 100644 src/complaince/suite.rs create mode 100644 src/complaince/target.rs create mode 100644 src/complaince/validator.rs diff --git a/src/complaince/mod.rs b/src/complaince/mod.rs new file mode 100644 index 0000000..b82d092 --- /dev/null +++ b/src/complaince/mod.rs @@ -0,0 +1,3 @@ +pub mod result; +pub mod suite; +pub mod target; diff --git a/src/complaince/result.rs b/src/complaince/result.rs new file mode 100644 index 0000000..cdbaf0e --- /dev/null +++ b/src/complaince/result.rs @@ -0,0 +1,11 @@ +use serde::{Deserialize, Serialize}; + +use super::suite::Test; + +#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)] +pub struct Result { + pub test: Test, + pub success: bool, + // sent by the app + pub logs: String, +} diff --git a/src/complaince/suite.rs b/src/complaince/suite.rs new file mode 100644 index 0000000..e14d48b --- /dev/null +++ b/src/complaince/suite.rs @@ -0,0 +1,24 @@ +use std::collections::HashMap; + +use semver::Version; +use url::Url; + +use serde::{Deserialize, Serialize}; + +#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)] +pub struct Suite { + pub name: String, + pub description: String, + pub version: Version, + pub tests: Vec, +} + +#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)] +pub struct Test { + pub name: String, + pub url: Url, + pub version: Version, + // URL to the container image, the version should be the tag + pub container: String, + pub env_vars: Option>, +} diff --git a/src/complaince/target.rs b/src/complaince/target.rs new file mode 100644 index 0000000..a97cf57 --- /dev/null +++ b/src/complaince/target.rs @@ -0,0 +1,15 @@ +use serde::{Deserialize, Serialize}; +use url::Url; + +use super::suite::Suite; +use super::suite::Test; + +#[derive(Clone, Debug, Eq, PartialEq, Deserialize, Serialize)] +pub struct Target { + pub version: String, + pub name: String, + pub homepage: Url, + pub repository: Url, + pub init_scripts: Option>, + pub suites: Vec, +} diff --git a/src/complaince/validator.rs b/src/complaince/validator.rs new file mode 100644 index 0000000..a4c24e9 --- /dev/null +++ b/src/complaince/validator.rs @@ -0,0 +1,9 @@ +use std::fs; +mod result; +mod suite; +mod target; + +fn main() { + let s = fs::read_to_string("../ftest-control/targets/forgejo/ftest.toml").unwrap(); + let _target: target::Target = toml::from_str(&s).unwrap(); +}