github-actions-models/tests/test_action.rs
William Woodruff d1f298a0c6
hackety hack
2023-12-31 00:12:17 -05:00

46 lines
1.5 KiB
Rust

use std::{env, path::Path};
use glomar_models::action::{Action, Runs};
fn load_action(name: &str) -> Action {
let action_path = Path::new(env!("CARGO_MANIFEST_DIR"))
.join("tests/sample-actions")
.join(name);
let action_contents = std::fs::read_to_string(action_path).unwrap();
serde_yaml::from_str(&action_contents).unwrap()
}
#[test]
fn test_load_all() {
let sample_actions = Path::new(env!("CARGO_MANIFEST_DIR")).join("tests/sample-actions");
for sample_action in std::fs::read_dir(&sample_actions).unwrap() {
let sample_action = sample_action.unwrap().path();
let action_contents = std::fs::read_to_string(sample_action).unwrap();
serde_yaml::from_str::<Action>(&action_contents).unwrap();
}
}
#[test]
fn test_setup_python() {
let setup_python = load_action("setup-python.yml");
assert_eq!(setup_python.name, "Setup Python");
assert_eq!(
setup_python.description.unwrap(),
"Set up a specific version of Python and add the command-line tools to the PATH."
);
assert_eq!(setup_python.author.unwrap(), "GitHub");
assert_eq!(setup_python.inputs.len(), 9);
assert_eq!(setup_python.outputs.len(), 3);
let Runs::JavaScript(runs) = setup_python.runs else {
unreachable!();
};
assert_eq!(runs.using, "node20");
assert_eq!(runs.main, "dist/setup/index.js");
assert_eq!(runs.post.unwrap(), "dist/cache-save/index.js");
assert_eq!(runs.post_if.unwrap(), "success()");
}