mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			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)
 | 
						|
	})
 | 
						|
}
 |