diff --git a/cmd/nerdctl/system/system_events_linux_test.go b/cmd/nerdctl/system/system_events_linux_test.go index 3dd5d30c40d..ae371ec479b 100644 --- a/cmd/nerdctl/system/system_events_linux_test.go +++ b/cmd/nerdctl/system/system_events_linux_test.go @@ -42,7 +42,8 @@ func TestEventFilters(t *testing.T) { Command: testEventFilterExecutor, Expected: func(data test.Data, helpers test.Helpers) *test.Expected { return &test.Expected{ - Output: test.Contains(data.Get("output")), + ExitCode: test.ExitCodeTimeout, + Output: test.Contains(data.Get("output")), } }, Data: test.WithData("filter", "event=START"). @@ -53,7 +54,8 @@ func TestEventFilters(t *testing.T) { Command: testEventFilterExecutor, Expected: func(data test.Data, helpers test.Helpers) *test.Expected { return &test.Expected{ - Output: test.Contains(data.Get("output")), + ExitCode: test.ExitCodeTimeout, + Output: test.Contains(data.Get("output")), } }, Data: test.WithData("filter", "event=start"). @@ -65,7 +67,8 @@ func TestEventFilters(t *testing.T) { Command: testEventFilterExecutor, Expected: func(data test.Data, helpers test.Helpers) *test.Expected { return &test.Expected{ - Output: test.Contains(data.Get("output")), + ExitCode: test.ExitCodeTimeout, + Output: test.Contains(data.Get("output")), } }, Data: test.WithData("filter", "event=unknown"). @@ -76,7 +79,8 @@ func TestEventFilters(t *testing.T) { Command: testEventFilterExecutor, Expected: func(data test.Data, helpers test.Helpers) *test.Expected { return &test.Expected{ - Output: test.Contains(data.Get("output")), + ExitCode: test.ExitCodeTimeout, + Output: test.Contains(data.Get("output")), } }, Data: test.WithData("filter", "status=start"). @@ -88,7 +92,8 @@ func TestEventFilters(t *testing.T) { Command: testEventFilterExecutor, Expected: func(data test.Data, helpers test.Helpers) *test.Expected { return &test.Expected{ - Output: test.Contains(data.Get("output")), + ExitCode: test.ExitCodeTimeout, + Output: test.Contains(data.Get("output")), } }, Data: test.WithData("filter", "status=unknown"). diff --git a/pkg/testutil/test/command.go b/pkg/testutil/test/command.go index 4f04423c1f1..7d383a357c6 100644 --- a/pkg/testutil/test/command.go +++ b/pkg/testutil/test/command.go @@ -34,6 +34,7 @@ import ( const ExitCodeGenericFail = -1 const ExitCodeNoCheck = -2 +const ExitCodeTimeout = -3 // GenericCommand is a concrete Command implementation type GenericCommand struct { @@ -148,11 +149,14 @@ func (gc *GenericCommand) Run(expect *Expected) { debug := result.String() + "Env:\n" + strings.Join(env, "\n") // ExitCode goes first if expect.ExitCode == ExitCodeNoCheck { //nolint:revive - // -2 means we do not care at all about exit code + // ExitCodeNoCheck means we do not care at all about exit code. It can be a failure, a success, or a timeout. } else if expect.ExitCode == ExitCodeGenericFail { - // -1 means any error + // ExitCodeGenericFail means we expect an error (excluding timeout). assert.Assert(gc.t, result.ExitCode != 0, - "Expected exit code to be different than 0\n"+debug) + "Command succeeded while we were expecting an error\n"+debug) + } else if result.Timeout { + assert.Assert(gc.t, expect.ExitCode == ExitCodeTimeout, + "Command unexpectedly timed-out\n"+debug) } else { assert.Assert(gc.t, expect.ExitCode == result.ExitCode, fmt.Sprintf("Expected exit code: %d\n", expect.ExitCode)+debug)