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)
 | |
| 	})
 | |
| }
 |