Skip to content

Commit 4519b52

Browse files
committed
test: refactor container_inspect_windows_test.go to use Tigron
Signed-off-by: Joonsoo Won <wonjs0116@gmail.com>
1 parent 007be9c commit 4519b52

1 file changed

Lines changed: 76 additions & 26 deletions

File tree

cmd/nerdctl/container/container_inspect_windows_test.go

Lines changed: 76 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,50 +17,100 @@
1717
package container
1818

1919
import (
20+
"encoding/json"
2021
"testing"
2122

2223
"gotest.tools/v3/assert"
2324

25+
"github.com/containerd/nerdctl/mod/tigron/expect"
26+
"github.com/containerd/nerdctl/mod/tigron/test"
27+
"github.com/containerd/nerdctl/mod/tigron/tig"
28+
29+
"github.com/containerd/nerdctl/v2/pkg/inspecttypes/dockercompat"
2430
"github.com/containerd/nerdctl/v2/pkg/testutil"
31+
"github.com/containerd/nerdctl/v2/pkg/testutil/nerdtest"
2532
)
2633

2734
func TestInspectProcessContainerContainsLabel(t *testing.T) {
28-
testContainer := testutil.Identifier(t)
35+
testCase := nerdtest.Setup()
36+
37+
testCase.Setup = func(data test.Data, helpers test.Helpers) {
38+
containerName := testutil.Identifier(t)
39+
data.Labels().Set("containerName", containerName)
40+
helpers.Ensure("run", "-d", "--name", containerName, "--label", "foo=foo", "--label", "bar=bar", testutil.CommonImage, "sleep", nerdtest.Infinity)
41+
nerdtest.EnsureContainerStarted(helpers, containerName)
42+
}
43+
44+
testCase.Cleanup = func(data test.Data, helpers test.Helpers) {
45+
containerName := data.Labels().Get("containerName")
46+
helpers.Anyhow("rm", "-f", containerName)
47+
}
48+
49+
testCase.Command = func(data test.Data, helpers test.Helpers) test.TestableCommand {
50+
containerName := data.Labels().Get("containerName")
51+
return helpers.Command("inspect", containerName)
52+
}
53+
54+
testCase.Expected = func(data test.Data, helpers test.Helpers) *test.Expected {
55+
return &test.Expected{
56+
ExitCode: expect.ExitCodeSuccess,
57+
Output: func(stdout string, t tig.T) {
58+
var dc []dockercompat.Container
2959

30-
base := testutil.NewBase(t)
31-
defer base.Cmd("rm", "-f", testContainer).Run()
60+
err := json.Unmarshal([]byte(stdout), &dc)
61+
assert.NilError(t, err)
62+
assert.Equal(t, 1, len(dc))
3263

33-
base.Cmd("run", "-d", "--name", testContainer, "--label", "foo=foo", "--label", "bar=bar", testutil.NginxAlpineImage).AssertOK()
34-
base.EnsureContainerStarted(testContainer)
35-
inspect := base.InspectContainer(testContainer)
36-
lbs := inspect.Config.Labels
64+
assert.Equal(t, "foo", dc[0].Config.Labels["foo"])
65+
assert.Equal(t, "bar", dc[0].Config.Labels["bar"])
66+
},
67+
}
68+
}
3769

38-
assert.Equal(base.T, "foo", lbs["foo"])
39-
assert.Equal(base.T, "bar", lbs["bar"])
70+
testCase.Run(t)
4071
}
4172

4273
func TestInspectHyperVContainerContainsLabel(t *testing.T) {
43-
if !testutil.HyperVSupported() {
44-
t.Skip("HyperV is not enabled, skipping test")
74+
testCase := nerdtest.Setup()
75+
testCase.Require = nerdtest.HyperV
76+
77+
testCase.Setup = func(data test.Data, helpers test.Helpers) {
78+
containerName := testutil.Identifier(t)
79+
data.Labels().Set("containerName", containerName)
80+
helpers.Ensure("run", "-d", "--name", containerName, "--isolation", "hyperv", "--label", "foo=foo", "--label", "bar=bar", testutil.CommonImage, "sleep", nerdtest.Infinity)
81+
nerdtest.EnsureContainerStarted(helpers, containerName)
4582
}
4683

47-
testContainer := testutil.Identifier(t)
48-
49-
base := testutil.NewBase(t)
50-
defer base.Cmd("rm", "-f", testContainer).Run()
84+
testCase.Cleanup = func(data test.Data, helpers test.Helpers) {
85+
containerName := data.Labels().Get("containerName")
86+
helpers.Anyhow("rm", "-f", containerName)
87+
}
5188

52-
base.Cmd("run", "-d", "--name", testContainer, "--isolation", "hyperv", "--label", "foo=foo", "--label", "bar=bar", testutil.NginxAlpineImage).AssertOK()
53-
base.EnsureContainerStarted(testContainer)
54-
inspect := base.InspectContainer(testContainer)
55-
lbs := inspect.Config.Labels
89+
testCase.Command = func(data test.Data, helpers test.Helpers) test.TestableCommand {
90+
containerName := data.Labels().Get("containerName")
91+
return helpers.Command("inspect", containerName)
92+
}
5693

57-
//check with HCS if the container is ineed a VM
58-
isHypervContainer, err := testutil.HyperVContainer(inspect)
59-
if err != nil {
60-
t.Fatalf("unable to list HCS containers: %s", err)
94+
testCase.Expected = func(data test.Data, helpers test.Helpers) *test.Expected {
95+
return &test.Expected{
96+
ExitCode: expect.ExitCodeSuccess,
97+
Output: func(stdout string, t tig.T) {
98+
var dc []dockercompat.Container
99+
100+
err := json.Unmarshal([]byte(stdout), &dc)
101+
assert.NilError(t, err)
102+
assert.Equal(t, 1, len(dc))
103+
104+
//check with HCS if the container is ineed a VM
105+
isHypervContainer, err := testutil.HyperVContainer(dc[0])
106+
assert.NilError(t, err)
107+
assert.Equal(t, true, isHypervContainer)
108+
109+
assert.Equal(t, "foo", dc[0].Config.Labels["foo"])
110+
assert.Equal(t, "bar", dc[0].Config.Labels["bar"])
111+
},
112+
}
61113
}
62114

63-
assert.Assert(t, isHypervContainer, true)
64-
assert.Equal(base.T, "foo", lbs["foo"])
65-
assert.Equal(base.T, "bar", lbs["bar"])
115+
testCase.Run(t)
66116
}

0 commit comments

Comments
 (0)