1
0
Fork 0
mirror of https://codeberg.org/icewind/haze.git synced 2026-06-03 17:14:08 +02:00

allow extra test args

This commit is contained in:
Robin Appelman 2021-05-05 20:29:30 +02:00
commit 818092fda8
2 changed files with 16 additions and 16 deletions

View file

@ -18,7 +18,7 @@ pub enum HazeArgs {
}, },
Test { Test {
options: CloudOptions, options: CloudOptions,
path: Option<String>, args: Vec<String>,
}, },
Exec { Exec {
filter: Option<String>, filter: Option<String>,
@ -90,11 +90,8 @@ impl HazeArgs {
HazeCommand::Test => { HazeCommand::Test => {
let mut args = args.peekable(); let mut args = args.peekable();
let options = CloudOptions::parse(&mut args)?; let options = CloudOptions::parse(&mut args)?;
let path = args.next().map(S::into); let args = args.map(S::into).collect();
if let Some(leftover) = args.next() { Ok(HazeArgs::Test { options, args })
return Err(Report::msg(format!("unrecognized option {}", leftover)));
}
Ok(HazeArgs::Test { options, path })
} }
HazeCommand::Exec => Ok(HazeArgs::Exec { HazeCommand::Exec => Ok(HazeArgs::Exec {
filter, filter,
@ -188,7 +185,7 @@ fn test_arg_parse() {
HazeArgs::parse(vec!["haze", "test"].into_iter()).unwrap(), HazeArgs::parse(vec!["haze", "test"].into_iter()).unwrap(),
HazeArgs::Test { HazeArgs::Test {
options: Default::default(), options: Default::default(),
path: None args: vec![]
} }
); );
assert_eq!( assert_eq!(
@ -217,4 +214,11 @@ fn test_arg_parse() {
command: vec!["foo".to_string(), "bar".to_string()], command: vec!["foo".to_string(), "bar".to_string()],
} }
); );
assert_eq!(
HazeArgs::parse(vec!["haze", "test", "foo", "bar"].into_iter()).unwrap(),
HazeArgs::Test {
options: Default::default(),
args: vec!["foo".into(), "bar".into()]
}
);
} }

View file

@ -144,7 +144,7 @@ async fn main() -> Result<()> {
None => eprintln!("{} is not running", cloud.id), None => eprintln!("{} is not running", cloud.id),
} }
} }
HazeArgs::Test { options, path } => { HazeArgs::Test { options, mut args } => {
let cloud = Cloud::create(&mut docker, options, &config).await?; let cloud = Cloud::create(&mut docker, options, &config).await?;
println!("Waiting for servers to start"); println!("Waiting for servers to start");
cloud.wait_for_start(&mut docker).await?; cloud.wait_for_start(&mut docker).await?;
@ -164,7 +164,8 @@ async fn main() -> Result<()> {
cloud.destroy(&mut docker).await?; cloud.destroy(&mut docker).await?;
return Err(e); return Err(e);
} }
if let Some(app) = path if let Some(app) = args
.first()
.as_ref() .as_ref()
.and_then(|path| path.strip_prefix("apps/")) .and_then(|path| path.strip_prefix("apps/"))
.map(|path| &path[0..path.find('/').unwrap_or(path.len())]) .map(|path| &path[0..path.find('/').unwrap_or(path.len())])
@ -175,13 +176,8 @@ async fn main() -> Result<()> {
println!("Enabling {}", app); println!("Enabling {}", app);
cloud.enable_app(&mut docker, app).await?; cloud.enable_app(&mut docker, app).await?;
} }
cloud args.insert(0, "tests".to_string());
.exec( cloud.exec(&mut docker, args, false).await?;
&mut docker,
vec!["tests".to_string(), path.unwrap_or_default()],
false,
)
.await?;
cloud.destroy(&mut docker).await?; cloud.destroy(&mut docker).await?;
} }
}; };