diff --git a/core/proc/shutdown_test.go b/core/proc/shutdown_test.go index ecdd45ec..79c7deff 100644 --- a/core/proc/shutdown_test.go +++ b/core/proc/shutdown_test.go @@ -28,3 +28,33 @@ func TestShutdown(t *testing.T) { called() assert.Equal(t, 3, val) } + +func TestNotifyMoreThanOnce(t *testing.T) { + ch := make(chan struct{}, 1) + + go func() { + var val int + called := AddWrapUpListener(func() { + val++ + }) + WrapUp() + WrapUp() + called() + assert.Equal(t, 1, val) + + called = AddShutdownListener(func() { + val += 2 + }) + Shutdown() + Shutdown() + called() + assert.Equal(t, 3, val) + ch <- struct{}{} + }() + + select { + case <-ch: + case <-time.After(time.Second): + t.Fatal("timeout, check error logs") + } +}