Skip to content

Commit 828ce70

Browse files
fix: test nerdctl ps filter
Signed-off-by: Shubharanshu Mahapatra <[email protected]>
1 parent b957f47 commit 828ce70

File tree

3 files changed

+37
-1
lines changed

3 files changed

+37
-1
lines changed

cmd/nerdctl/container/container_list_linux_test.go

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
"gotest.tools/v3/assert"
2828

29+
"github.com/containerd/nerdctl/mod/tigron/test"
2930
"github.com/containerd/nerdctl/v2/pkg/formatter"
3031
"github.com/containerd/nerdctl/v2/pkg/strutil"
3132
"github.com/containerd/nerdctl/v2/pkg/tabutil"
@@ -628,3 +629,35 @@ func TestContainerListCheckCreatedTime(t *testing.T) {
628629
t.Errorf("expected containers in decending order")
629630
}
630631
}
632+
633+
func TestContainerListStatusFilter(t *testing.T) {
634+
testCase := nerdtest.Setup()
635+
testCase.Setup = func(data test.Data, helpers test.Helpers) {
636+
helpers.Ensure("create", "--name", data.Identifier("container"), testutil.CommonImage, "echo", "foo")
637+
data.Labels().Set("cID", data.Identifier("container"))
638+
}
639+
testCase.Cleanup = func(data test.Data, helpers test.Helpers) {
640+
helpers.Anyhow("rm", "-f", data.Identifier("container"))
641+
}
642+
643+
testCase.SubTests = []*test.Case{
644+
// TODO: Refactor other filter tests
645+
{
646+
Description: "ps filter with status=created",
647+
NoParallel: true,
648+
Command: func(data test.Data, helpers test.Helpers) test.TestableCommand {
649+
return helpers.Command("ps", "-a", "--filter", "status=created", "--filter", fmt.Sprintf("name=%s", data.Labels().Get("cID")))
650+
},
651+
Expected: func(data test.Data, helpers test.Helpers) *test.Expected {
652+
return &test.Expected{
653+
ExitCode: 0,
654+
Output: func(stdout, info string, t *testing.T) {
655+
assert.Assert(t, strings.Contains(stdout, data.Labels().Get("cID")), "No container found with status created")
656+
},
657+
}
658+
},
659+
},
660+
}
661+
662+
testCase.Run(t)
663+
}

pkg/cmd/container/list.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,6 @@ func filterContainers(ctx context.Context, client *containerd.Client, filters []
6464
return nil, nil, err
6565
}
6666
containers = filterCtx.MatchesFilters(ctx)
67-
6867
sort.Slice(containers, func(i, j int) bool {
6968
infoI, _ := containers[i].Info(ctx, containerd.WithoutRefreshedMetadata)
7069
infoJ, _ := containers[j].Info(ctx, containerd.WithoutRefreshedMetadata)

pkg/cmd/container/list_util.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
containerd "github.com/containerd/containerd/v2/client"
2727
"github.com/containerd/containerd/v2/core/containers"
28+
"github.com/containerd/errdefs"
2829
"github.com/containerd/log"
2930

3031
"github.com/containerd/nerdctl/v2/pkg/containerutil"
@@ -235,6 +236,9 @@ func (cl *containerFilterContext) matchesTaskFilters(ctx context.Context, contai
235236
defer cancel()
236237
task, err := container.Task(ctx, nil)
237238
if err != nil {
239+
if errdefs.IsNotFound(err) {
240+
return true
241+
}
238242
log.G(ctx).Warn(err)
239243
return false
240244
}

0 commit comments

Comments
 (0)