use assert2::let_assert; use rstest::rstest; use rustainers::runner::{RunOption, Runner}; use rustainers::{ ContainerStatus, ImageName, RunnableContainer, RunnableContainerBuilder, ToRunnableContainer, }; use tracing::error; mod common; pub use self::common::*; #[derive(Debug, Clone, Copy)] struct HelloWorld; impl ToRunnableContainer for HelloWorld { fn to_runnable(&self, builder: RunnableContainerBuilder) -> RunnableContainer { builder .with_image(ImageName::new("hello-world")) .with_wait_strategy(ContainerStatus::Exited) .build() } } #[rstest] #[tokio::test] async fn should_run_hello_world(runner: &Runner) { _ = tracing_subscriber::fmt::try_init(); let result = runner .start_with_options(HelloWorld, RunOption::default()) .await; if let Err(err) = &result { error!("{err}"); } let_assert!(Ok(_) = result); }