diff --git a/delete.go b/delete.go index b43dcaa7..1e0b08f8 100644 --- a/delete.go +++ b/delete.go @@ -50,6 +50,7 @@ status of "ubuntu01" as "stopped" the following will delete resources held for } id := context.Args().First() + force := context.Bool("force") container, err := getContainer(context) if err != nil { if lerr, ok := err.(libcontainer.Error); ok && lerr.Code() == libcontainer.ContainerNotExists { @@ -59,6 +60,9 @@ status of "ubuntu01" as "stopped" the following will delete resources held for if e := os.RemoveAll(path); e != nil { fmt.Fprintf(os.Stderr, "remove %s: %v\n", path, e) } + if force { + return nil + } } return err } @@ -72,7 +76,7 @@ status of "ubuntu01" as "stopped" the following will delete resources held for case libcontainer.Created: return killContainer(container) default: - if context.Bool("force") { + if force { return killContainer(container) } else { return fmt.Errorf("cannot delete container %s that is not stopped: %s\n", id, s) diff --git a/tests/integration/delete.bats b/tests/integration/delete.bats index f4d7d019..c5ed215d 100644 --- a/tests/integration/delete.bats +++ b/tests/integration/delete.bats @@ -46,3 +46,8 @@ function teardown() { runc state test_busybox [ "$status" -ne 0 ] } + +@test "runc delete --force ignore not exist" { + runc delete --force notexists + [ "$status" -eq 0 ] +}