cuddle-please/crates/cuddle-release/tests/config.rs
kjuulh 6a3a14ec94
feat: add config parsing
Signed-off-by: kjuulh <contact@kjuulh.io>
2023-07-29 15:27:16 +02:00

84 lines
2.0 KiB
Rust

pub mod common;
use std::path::PathBuf;
use common::BufferUi;
use cuddle_release::command::Command;
use tracing_test::traced_test;
fn get_base_args<'a>() -> Vec<&'a str> {
vec!["cuddle-please", "config", "list"]
}
fn assert_output(ui: &BufferUi, expected_stdout: &str, expected_stderr: &str) {
let (stdout, stderr) = ui.get_output();
assert_eq!(expected_stdout, &stdout);
assert_eq!(expected_stderr, &stderr);
}
fn get_test_data_path(item: &str) -> PathBuf {
std::env::current_dir()
.ok()
.map(|p| p.join("testdata").join(item))
.unwrap()
}
#[test]
#[traced_test]
fn test_config_from_current_dir() {
let args = get_base_args();
let ui = &BufferUi::default();
let current_dir = get_test_data_path("cuddle-embed");
Command::new_from_args(Some(ui), args.into_iter())
.execute(Some(&current_dir))
.unwrap();
assert_output(ui, "cuddle-config\n", "");
}
#[test]
#[traced_test]
fn test_config_from_source_dir() {
let mut args = get_base_args();
let ui = &BufferUi::default();
let current_dir = get_test_data_path("cuddle-embed");
args.push("--source");
args.push(current_dir.to_str().unwrap());
Command::new_from_args(Some(ui), args.into_iter())
.execute(None)
.unwrap();
assert_output(ui, "cuddle-config\n", "");
}
#[test]
#[traced_test]
fn test_config_from_stdin() {
let mut args = get_base_args();
let ui = &BufferUi::default();
let current_dir = get_test_data_path("cuddle-embed");
args.push("--source");
args.push(current_dir.to_str().unwrap());
args.push("--config-stdin");
Command::new_from_args_with_stdin(Some(ui), args.into_iter(), || Ok("please".into()))
.execute(None)
.unwrap();
assert_output(ui, "cuddle-config\n", "");
}
#[test]
#[traced_test]
fn test_config_fails_when_not_path_is_set() {
let args = get_base_args();
let ui = &BufferUi::default();
let res = Command::new_from_args(Some(ui), args.into_iter()).execute(None);
assert!(res.is_err())
}