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. 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