-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrors_test.go
More file actions
50 lines (38 loc) · 1.3 KB
/
errors_test.go
File metadata and controls
50 lines (38 loc) · 1.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package enigma
import (
"errors"
"fmt"
"testing"
"github.com/stretchr/testify/assert"
)
func TestOpErrorErrorStringAndUnwrap(t *testing.T) {
base := fmt.Errorf("boom")
err := &OpError{Op: "x.y", Kind: ErrInvalidArgument, Err: base}
assert.Equal(t, "x.y: boom", err.Error())
assert.Equal(t, base, err.Unwrap())
err = &OpError{Op: "x.y", Kind: ErrInvalidArgument}
assert.Equal(t, "x.y: enigma: invalid argument", err.Error())
err = &OpError{Kind: ErrInvalidContainer}
assert.Equal(t, "enigma: invalid container", err.Error())
err = &OpError{Err: base}
assert.Equal(t, "boom", err.Error())
err = &OpError{Op: "op.only"}
assert.Equal(t, "op.only: enigma error", err.Error())
err = &OpError{}
assert.Equal(t, "enigma: error", err.Error())
var nilErr *OpError
assert.Equal(t, "<nil>", nilErr.Error())
assert.Nil(t, nilErr.Unwrap())
assert.False(t, nilErr.Is(ErrInvalidArgument))
}
func TestOpErrorIsAndWrapError(t *testing.T) {
base := fmt.Errorf("boom")
err := &OpError{Op: "x", Kind: ErrUnwrapFailed, Err: base}
assert.True(t, err.Is(ErrUnwrapFailed))
assert.True(t, errors.Is(err, base))
wrapped := WrapError("x", ErrIntegrity, base)
assert.NotNil(t, wrapped)
assert.True(t, errors.Is(wrapped, ErrIntegrity))
assert.True(t, errors.Is(wrapped, base))
assert.Nil(t, WrapError("", nil, nil))
}