diff --git a/list.go b/list.go index 997cd8817..3bfd6b831 100644 --- a/list.go +++ b/list.go @@ -114,7 +114,7 @@ func getContainers(context *cli.Context) ([]containerState, error) { root := context.GlobalString("root") list, err := os.ReadDir(root) if err != nil { - if errors.Is(err, os.ErrNotExist) && context.IsSet("root") { + if errors.Is(err, os.ErrNotExist) && !context.GlobalIsSet("root") { // Ignore non-existing default root directory // (no containers created yet). return nil, nil diff --git a/tests/integration/list.bats b/tests/integration/list.bats index 2d23b8afe..e85091548 100644 --- a/tests/integration/list.bats +++ b/tests/integration/list.bats @@ -51,3 +51,15 @@ function teardown() { [[ "${lines[0]}" == *[,][\{]"\"ociVersion\""[:]"\""*[0-9][\.]*[0-9][\.]*[0-9]*"\""[,]"\"id\""[:]"\"test_box2\""[,]"\"pid\""[:]*[0-9][,]"\"status\""[:]*"\"running\""[,]"\"bundle\""[:]*$bundle*[,]"\"rootfs\""[:]"\""*"\""[,]"\"created\""[:]*[0-9]*[\}]* ]] [[ "${lines[0]}" == *[,][\{]"\"ociVersion\""[:]"\""*[0-9][\.]*[0-9][\.]*[0-9]*"\""[,]"\"id\""[:]"\"test_box3\""[,]"\"pid\""[:]*[0-9][,]"\"status\""[:]*"\"running\""[,]"\"bundle\""[:]*$bundle*[,]"\"rootfs\""[:]"\""*"\""[,]"\"created\""[:]*[0-9]*[\}][\]] ]] } + +@test "list with non-existent root fails" { + ROOT=/non-existent-dir runc list + [ "$status" -ne 0 ] +} + +@test "list with default non-existent root succeeds" { + requires root # rootless auto-creates a directory under $XDG_RUNTIME_DIR. + test -d /root/runc && skip "requires missing /root/runc" + ROOT='' runc list + [ "$status" -eq 0 ] +}