mirror of
https://github.com/grafana/grafana.git
synced 2024-12-28 01:41:24 -06:00
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package util
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestWithCancelWithReason(t *testing.T) {
|
|
t.Run("should add custom reason to the standard error", func(t *testing.T) {
|
|
expected := errors.New("test-err")
|
|
ctx, fn := WithCancelCause(context.Background())
|
|
fn(expected)
|
|
select {
|
|
case <-ctx.Done():
|
|
default:
|
|
require.Fail(t, "the context was not cancelled")
|
|
}
|
|
require.ErrorIs(t, ctx.Err(), expected)
|
|
require.ErrorIs(t, ctx.Err(), context.Canceled)
|
|
})
|
|
|
|
t.Run("should return only the first reason if called multiple times", func(t *testing.T) {
|
|
expected := errors.New("test-err")
|
|
ctx, fn := WithCancelCause(context.Background())
|
|
fn(expected)
|
|
fn(errors.New("other error"))
|
|
require.ErrorIs(t, ctx.Err(), expected)
|
|
})
|
|
|
|
t.Run("should return only the first reason if called multiple times", func(t *testing.T) {
|
|
expected := errors.New("test-err")
|
|
ctx, fn := WithCancelCause(context.Background())
|
|
fn(expected)
|
|
fn(errors.New("other error"))
|
|
require.ErrorIs(t, ctx.Err(), expected)
|
|
})
|
|
|
|
t.Run("should return context.Canceled if no reason provided", func(t *testing.T) {
|
|
ctx, fn := WithCancelCause(context.Background())
|
|
fn(nil)
|
|
require.Equal(t, ctx.Err(), context.Canceled)
|
|
})
|
|
}
|