From 617847116ab533c3cf8c95ec8827c7f74aeb615e Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Fri, 22 Jan 2016 14:24:06 -0800 Subject: [PATCH 1/2] Docker#delete_container: rescue on Docker::Error::ServerError --- lib/hoosegow/docker.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/hoosegow/docker.rb b/lib/hoosegow/docker.rb index 716edb0..0a95429 100644 --- a/lib/hoosegow/docker.rb +++ b/lib/hoosegow/docker.rb @@ -127,6 +127,8 @@ def stop_container def delete_container return unless @container @container.delete + rescue ::Docker::Error::ServerError => e + $stderr.puts "Docker could not delete #{@container.id}: #{e}" end # Public: Build a new image. From b863f08d27926c5c50a99fcb875ded98d87a075f Mon Sep 17 00:00:00 2001 From: Parker Moore Date: Sat, 23 Jan 2016 13:18:16 -0800 Subject: [PATCH 2/2] Add test for Docker#delete_container catching ServerError --- spec/hoosegow_docker_spec.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spec/hoosegow_docker_spec.rb b/spec/hoosegow_docker_spec.rb index 7f0369e..320a5e7 100644 --- a/spec/hoosegow_docker_spec.rb +++ b/spec/hoosegow_docker_spec.rb @@ -106,4 +106,26 @@ expect(docker.image_exist?("not_there")).to eq(false) end end + + context "delete_container" do + let(:docker) { Hoosegow::Docker.new CONFIG } + let(:container) { Object.new } + before do + docker.instance_variable_set(:@container, container) + allow(container).to receive(:id).and_return("1234") + $old_stderr = $stderr + $stderr = StringIO.new + end + after do + $stderr = $old_stderr + end + + it "rescues error and prints when error is raised" do + allow(container).to receive(:delete). + and_raise(::Docker::Error::ServerError, "device or resource busy") + docker.delete_container + $stderr.rewind + expect($stderr.read).to eql("Docker could not delete 1234: device or resource busy\n") + end + end end