-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patherrors_test.go
More file actions
119 lines (97 loc) · 2.56 KB
/
Copy patherrors_test.go
File metadata and controls
119 lines (97 loc) · 2.56 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
package config_test
import (
"errors"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/tarantool/go-config"
)
type customError string
func (e customError) Error() string {
return string(e)
}
func TestNewCollectorError(t *testing.T) {
t.Parallel()
innerErr := errors.New("inner error") //nolint:err113
collectorName := "test-collector"
err := config.NewCollectorError(collectorName, innerErr)
require.NotNil(t, err)
assert.Equal(t, collectorName, err.CollectorName)
assert.Equal(t, innerErr, err.Err)
}
func TestCollectorError_Error(t *testing.T) {
t.Parallel()
tests := []struct {
name string
collectorName string
innerErr error
expectedMsg string
}{
{
name: "simple error",
collectorName: "map",
innerErr: errors.New("failed to read"), //nolint:err113
expectedMsg: "collector map: failed to read",
},
{
name: "empty collector name",
collectorName: "",
innerErr: errors.New("some error"), //nolint:err113
expectedMsg: "collector : some error",
},
{
name: "nil inner error",
collectorName: "test",
innerErr: nil,
expectedMsg: "collector test: <nil>",
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
err := config.NewCollectorError(tt.collectorName, tt.innerErr)
assert.Equal(t, tt.expectedMsg, err.Error())
})
}
}
func TestCollectorError_Unwrap(t *testing.T) {
t.Parallel()
tests := []struct {
name string
innerErr error
expectedUnwrap error
}{
{
name: "non-nil inner error",
innerErr: errors.New("original error"), //nolint:err113
expectedUnwrap: errors.New("original error"), //nolint:err113
},
{
name: "nil inner error",
innerErr: nil,
expectedUnwrap: nil,
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
t.Parallel()
err := config.NewCollectorError("test", tt.innerErr)
unwrapped := err.Unwrap()
assert.Equal(t, tt.expectedUnwrap, unwrapped)
})
}
}
func TestCollectorError_Unwrap_ErrorsIs(t *testing.T) {
t.Parallel()
innerErr := errors.New("inner error") //nolint:err113
wrappedErr := config.NewCollectorError("test", innerErr)
assert.ErrorIs(t, wrappedErr, innerErr)
}
func TestCollectorError_Unwrap_ErrorsAs(t *testing.T) {
t.Parallel()
innerErr := customError("custom error")
wrappedErr := config.NewCollectorError("test", innerErr)
var target customError
require.ErrorAs(t, wrappedErr, &target)
assert.Equal(t, innerErr, target)
}