feat: user-facing compliance types

This commit is contained in:
Aravinth Manivannan 2023-09-27 19:47:28 +05:30
parent 6d39176cbf
commit 85bce281ff
Signed by: realaravinth
GPG Key ID: F8F50389936984FF
5 changed files with 62 additions and 0 deletions

3
src/complaince/mod.rs Normal file
View File

@ -0,0 +1,3 @@
pub mod result;
pub mod suite;
pub mod target;

11
src/complaince/result.rs Normal file
View File

@ -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,
}

24
src/complaince/suite.rs Normal file
View File

@ -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<Test>,
}
#[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<HashMap<String, String>>,
}

15
src/complaince/target.rs Normal file
View File

@ -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<Vec<Test>>,
pub suites: Vec<Suite>,
}

View File

@ -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();
}