2023-12-31 05:12:17 +00:00
|
|
|
use std::{env, path::Path};
|
|
|
|
|
2024-01-02 01:37:16 +00:00
|
|
|
use glomar_models::workflow::{event::OptionalBody, job::RunsOn, Job, Trigger, Workflow};
|
2023-12-31 05:12:17 +00:00
|
|
|
|
|
|
|
fn load_workflow(name: &str) -> Workflow {
|
|
|
|
let workflow_path = Path::new(env!("CARGO_MANIFEST_DIR"))
|
|
|
|
.join("tests/sample-workflows")
|
|
|
|
.join(name);
|
|
|
|
let workflow_contents = std::fs::read_to_string(workflow_path).unwrap();
|
|
|
|
serde_yaml::from_str(&workflow_contents).unwrap()
|
|
|
|
}
|
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_load_all() {
|
|
|
|
let sample_workflows = Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/sample-workflows");
|
|
|
|
|
|
|
|
for sample_action in std::fs::read_dir(&sample_workflows).unwrap() {
|
|
|
|
let sample_workflow = sample_action.unwrap().path();
|
|
|
|
let workflow_contents = std::fs::read_to_string(sample_workflow).unwrap();
|
|
|
|
serde_yaml::from_str::<Workflow>(&workflow_contents).unwrap();
|
|
|
|
}
|
|
|
|
}
|
2024-01-02 01:37:16 +00:00
|
|
|
|
|
|
|
#[test]
|
|
|
|
fn test_pip_audit_ci() {
|
|
|
|
let workflow = load_workflow("pip-audit-ci.yml");
|
|
|
|
|
|
|
|
assert!(
|
|
|
|
matches!(workflow.on, Trigger::Events(events) if matches!(events.pull_request, OptionalBody::Default))
|
|
|
|
);
|
|
|
|
|
|
|
|
let test_job = &workflow.jobs["test"];
|
|
|
|
if let Job::NormalJob(test_job) = test_job {
|
|
|
|
assert_eq!(test_job.name, None);
|
|
|
|
assert_eq!(
|
|
|
|
test_job.runs_on,
|
|
|
|
RunsOn::Target(String::from("ubuntu-latest").into())
|
|
|
|
);
|
|
|
|
} else {
|
|
|
|
panic!("oops");
|
|
|
|
}
|
|
|
|
}
|