diff --git a/validation/create.go b/validation/create.go index 0096f889e..c9abd4660 100644 --- a/validation/create.go +++ b/validation/create.go @@ -27,7 +27,7 @@ func main() { if err != nil { util.Fatal(err) } - defer r.Clean(true) + defer r.Clean(true, true) err = r.SetConfig(&g) if err != nil { diff --git a/validation/util/container.go b/validation/util/container.go index f7f492a21..95b21bf1b 100644 --- a/validation/util/container.go +++ b/validation/util/container.go @@ -145,16 +145,19 @@ func (r *Runtime) Delete() error { return cmd.Run() } -// Clean deletes the container and removes the bundle file according to the input parameter -func (r *Runtime) Clean(removeBundle bool) error { +// Clean deletes the container. If removeBundle is set, the bundle +// directory is removed after the container is deleted succesfully or, if +// forceRemoveBundle is true, after the deletion attempt regardless of +// whether it was successful or not. +func (r *Runtime) Clean(removeBundle bool, forceRemoveBundle bool) error { err := r.Delete() - if err != nil { - return err - } - if removeBundle { - os.RemoveAll(r.BundleDir) + if removeBundle && (err == nil || forceRemoveBundle) { + err2 := os.RemoveAll(r.BundleDir) + if err2 != nil && err == nil { + err = err2 + } } - return nil + return err } diff --git a/validation/util/test.go b/validation/util/test.go index 614f936c3..be329236e 100644 --- a/validation/util/test.go +++ b/validation/util/test.go @@ -90,7 +90,7 @@ func RuntimeInsideValidate(g *generate.Generator, f PreFunc) (err error) { os.RemoveAll(bundleDir) return err } - defer r.Clean(true) + defer r.Clean(true, true) err = r.SetConfig(g) if err != nil { return err