github.com/mgoltzsche/khelm@v1.0.1/cmd/khelm/errlog_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/pkg/errors" 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestTraceableRootCause(t *testing.T) { 12 simpleErr := fmt.Errorf("simple error") 13 traceableErr := errors.New("traceable error") 14 wrapped := errors.Wrap(simpleErr, "wrapped") 15 msgErr := errors.WithMessage(simpleErr, "msg") 16 wrappedMsg := errors.Wrap(msgErr, "wrapped") 17 tests := []struct { 18 name string 19 input error 20 expected error 21 }{ 22 {"no wrapping or causing", simpleErr, simpleErr}, 23 {"wrapping", fmt.Errorf("wrapped: %w", traceableErr), traceableErr}, 24 {"causing", errors.Wrap(traceableErr, "wrapped"), traceableErr}, 25 {"deeply nested", errors.Wrap(fmt.Errorf("errorf: %w", errors.Wrap(traceableErr, "wrappedinner")), "wrappedouter"), traceableErr}, 26 {"root cause without stack trace", errors.Wrap(wrapped, "wrappedouter"), wrapped}, 27 {"root cause without stack trace but formatter", errors.Wrap(wrappedMsg, "wrappedouter"), wrappedMsg}, 28 } 29 30 for _, tt := range tests { 31 t.Run(tt.name, func(t *testing.T) { 32 err := traceableRootCause(tt.input) 33 require.Equal(t, tt.expected, err) 34 }) 35 } 36 }