From 1093212176206eee064b2ecc3fe68fcf03d384e8 Mon Sep 17 00:00:00 2001 From: Matt Keeler Date: Wed, 24 Jun 2020 12:34:57 -0400 Subject: [PATCH] Add test to ensure the StopChannelContext works properly --- lib/stop_context_test.go | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lib/stop_context_test.go diff --git a/lib/stop_context_test.go b/lib/stop_context_test.go new file mode 100644 index 0000000000..8512e7dce9 --- /dev/null +++ b/lib/stop_context_test.go @@ -0,0 +1,36 @@ +package lib + +import ( + "context" + "testing" + + "github.com/stretchr/testify/require" +) + +func TestStopChannelContext(t *testing.T) { + ch := make(chan struct{}) + + ctx := StopChannelContext{StopCh: ch} + + select { + case <-ctx.Done(): + require.FailNow(t, "StopChannelContext should not be done yet") + default: + // do nothing things are good + } + + close(ch) + + select { + case <-ctx.Done(): + // things are good, as we are done + default: + require.FailNow(t, "StopChannelContext should be done") + } + + // issue it twice to ensure that we indefinitely return the + // same value - this is what the context interface says is + // the correct behavior. + require.Equal(t, context.Canceled, ctx.Err()) + require.Equal(t, context.Canceled, ctx.Err()) +}