From bdd630ce6805cb35c4dd90d098aed8309f511d18 Mon Sep 17 00:00:00 2001 From: Alano Terblanche <18033717+Benehiko@users.noreply.github.com> Date: Fri, 24 Jan 2025 16:19:33 +0100 Subject: [PATCH] test: notifyContext Signed-off-by: Alano Terblanche <18033717+Benehiko@users.noreply.github.com> --- cmd/docker/docker_test.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/cmd/docker/docker_test.go b/cmd/docker/docker_test.go index 1998b77c9904..9c7eb766d537 100644 --- a/cmd/docker/docker_test.go +++ b/cmd/docker/docker_test.go @@ -5,10 +5,14 @@ import ( "context" "io" "os" + "syscall" "testing" + "time" "github.com/docker/cli/cli/command" "github.com/docker/cli/cli/debug" + platformsignals "github.com/docker/cli/cmd/docker/internal/signals" + "github.com/pkg/errors" "github.com/sirupsen/logrus" "gotest.tools/v3/assert" is "gotest.tools/v3/assert/cmp" @@ -75,3 +79,16 @@ func TestVersion(t *testing.T) { assert.NilError(t, err) assert.Check(t, is.Contains(b.String(), "Docker version")) } + +func TestUserTerminatedError(t *testing.T) { + ctx, cancel := context.WithTimeoutCause(context.Background(), time.Second*1, errors.New("test timeout")) + t.Cleanup(cancel) + + notifyCtx, cancelNotify := notifyContext(ctx, platformsignals.TerminationSignals...) + t.Cleanup(cancelNotify) + + syscall.Kill(syscall.Getpid(), syscall.SIGINT) + + <-notifyCtx.Done() + assert.ErrorIs(t, context.Cause(notifyCtx), errCtxUserTerminated) +}