From 0dcb67c086454579cbb2e0d902bcc3fca6f60ec9 Mon Sep 17 00:00:00 2001 From: Archie Atkinson Date: Sat, 30 Aug 2025 15:38:51 +0100 Subject: [PATCH] Fixes Failed Container Build not being Deleted --- src/docker.rs | 10 ++++++---- src/main.rs | 5 ++--- tests/docker.rs | 13 +++---------- 3 files changed, 11 insertions(+), 17 deletions(-) diff --git a/src/docker.rs b/src/docker.rs index dfb5340..7b733fa 100644 --- a/src/docker.rs +++ b/src/docker.rs @@ -44,9 +44,9 @@ pub enum DockerError { #[diagnostic(code(cli::container::entering))] EnteringContainer(String), - #[error("The following command return an error code:\n\n{cmd}\n\n")] - #[diagnostic(code(cli::container::command::exitcode), help("{stderr}"))] - CommandExitCode { cmd: String, stderr: String }, + #[error("The following command return an error code:\n\n{cmd}\n\n{stdout}")] + #[diagnostic(code(cli::container::command::exitcode))] + CommandExitCode { cmd: String, stdout: String }, #[error("The following command failed due to an unknown signal:\n{0}")] #[diagnostic(code(cli::container::command::killed))] @@ -214,6 +214,8 @@ impl DockerHandler { ..Default::default() }; + Spinner::new("Removing Container"); + self.docker .remove_container(&self.env.name, Some(option)) .await @@ -311,7 +313,7 @@ impl DockerHandler { Some(0) => Ok(output), Some(_) => Err(DockerError::CommandExitCode { cmd: command, - stderr: String::from_utf8(output.stderr.clone()).unwrap(), + stdout: String::from_utf8(output.stdout.clone()).unwrap(), } .into()), } diff --git a/src/main.rs b/src/main.rs index 778bd50..7ac67fe 100644 --- a/src/main.rs +++ b/src/main.rs @@ -74,9 +74,8 @@ async fn main() -> Result<()> { }; if let Err(command_error) = result { - if let Err(stop_error) = docker.stop_container_if_running().await { - return Err(command_error.wrap_err(stop_error)); - } + docker.stop_container_if_running().await?; + docker.delete_container_if_exists().await?; return Err(command_error); } diff --git a/tests/docker.rs b/tests/docker.rs index ea840ff..67a8d29 100644 --- a/tests/docker.rs +++ b/tests/docker.rs @@ -398,7 +398,7 @@ fn badly_formed_dockerfile() -> Result<()> { "#}; write!(&dockerfile, "{}", content).unwrap(); - TestHarness::new() + TestOutput::new() .config(&formatdoc!( r#" dockerfile = "{}" @@ -409,15 +409,8 @@ fn badly_formed_dockerfile() -> Result<()> { dockerfile.path().to_str().unwrap(), ))? .args(vec!["--config-path", "[config_path]", "[name]"])? - .run(DEFAULT_TIMEOUT)? - // Can't test full output as we don't know the image name - .expect_string("Error: cli::container::command::exitcode")? - .expect_string("The following command return an error code:")? - .expect_string(indoc!( - r#"help: #0 building with "default" instance using docker driver"# - ))? - .expect_terminate()? - .failure(1)?; + .stderr("Error: cli::container::command::exitcode")? + .code(1)?; dockerfile.close().unwrap(); Ok(())