Do not fail in TearDown if container not found when removing

If the container is not found when removing, it means it's already not
there anymore, so it's safe to ignore. This should reduce a bit some
`TearDown` flakyness..

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 636d6ee57c85df086823e998077d83dc0bb94035
Component: engine
This commit is contained in:
Vincent Demeester
2017-01-02 19:21:52 +01:00
parent 0e306f91de
commit 7cbb50d925
4 changed files with 14 additions and 6 deletions

View File

@ -1291,7 +1291,7 @@ func (s *DockerSuite) TestPutContainerArchiveErrSymlinkInVolumeToReadOnlyRootfs(
readOnly: true,
volumes: defaultVolumes(testVol), // Our bind mount is at /vol2
})
defer deleteContainer(cID)
defer deleteContainer(false, cID)
// Attempt to extract to a symlink in the volume which points to a
// directory outside the volume. This should cause an error because the

View File

@ -39,7 +39,7 @@ func setupImageWithTag(c *check.C, tag string) (digest.Digest, error) {
c.Assert(err, checker.IsNil, check.Commentf("image tagging failed: %s", out))
// delete the container as we don't need it any more
err = deleteContainer(containerName)
err = deleteContainer(false, containerName)
c.Assert(err, checker.IsNil)
// push the image

View File

@ -2117,7 +2117,7 @@ func (s *DockerSuite) TestRunDeallocatePortOnMissingIptablesRule(c *check.C) {
if err != nil {
c.Fatal(err, out)
}
if err := deleteContainer(id); err != nil {
if err := deleteContainer(false, id); err != nil {
c.Fatal(err)
}

View File

@ -118,8 +118,16 @@ func newRequestClient(method, endpoint string, data io.Reader, ct, daemon string
return req, client, nil
}
func deleteContainer(container ...string) error {
// FIXME(vdemeester) move this away are remove ignoreNoSuchContainer bool
func deleteContainer(ignoreNoSuchContainer bool, container ...string) error {
result := icmd.RunCommand(dockerBinary, append([]string{"rm", "-fv"}, container...)...)
if ignoreNoSuchContainer && result.Error != nil {
// If the error is "No such container: ..." this means the container doesn't exists anymore,
// we can safely ignore that one.
if strings.Contains(result.Error.Error(), "No such container") {
return nil
}
}
return result.Compare(icmd.Success)
}
@ -138,7 +146,7 @@ func deleteAllContainers(c *check.C) {
c.Assert(err, checker.IsNil, check.Commentf("containers: %v", containers))
if containers != "" {
err = deleteContainer(strings.Split(strings.TrimSpace(containers), "\n")...)
err = deleteContainer(true, strings.Split(strings.TrimSpace(containers), "\n")...)
c.Assert(err, checker.IsNil)
}
}
@ -596,7 +604,7 @@ func (f *remoteFileServer) Close() error {
if f.container == "" {
return nil
}
return deleteContainer(f.container)
return deleteContainer(false, f.container)
}
func newRemoteFileServer(ctx *FakeContext) (*remoteFileServer, error) {