84 lines
2.0 KiB
Rust
84 lines
2.0 KiB
Rust
pub mod common;
|
|
|
|
use std::path::PathBuf;
|
|
|
|
use common::BufferUi;
|
|
use cuddle_please::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(¤t_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())
|
|
}
|