1
1
package testutil
2
2
3
3
import (
4
- "fmt"
5
4
"reflect"
6
5
"time"
6
+
7
+ "golang.org/x/xerrors"
7
8
)
8
9
9
10
type Random struct {
@@ -35,12 +36,12 @@ func PopulateStruct(s interface{}, r *Random) error {
35
36
36
37
v := reflect .ValueOf (s )
37
38
if v .Kind () != reflect .Ptr || v .IsNil () {
38
- return fmt .Errorf ("s must be a non-nil pointer" )
39
+ return xerrors .Errorf ("s must be a non-nil pointer" )
39
40
}
40
41
41
42
v = v .Elem ()
42
43
if v .Kind () != reflect .Struct {
43
- return fmt .Errorf ("s must be a pointer to a struct" )
44
+ return xerrors .Errorf ("s must be a pointer to a struct" )
44
45
}
45
46
46
47
t := v .Type ()
@@ -55,7 +56,7 @@ func PopulateStruct(s interface{}, r *Random) error {
55
56
56
57
nv , err := populateValue (fieldValue , r )
57
58
if err != nil {
58
- return fmt .Errorf ("%s : %w" , fieldName , err )
59
+ return xerrors .Errorf ("%s : %w" , fieldName , err )
59
60
}
60
61
v .Field (i ).Set (nv )
61
62
}
@@ -96,7 +97,7 @@ func populateValue(v reflect.Value, r *Random) (reflect.Value, error) {
96
97
for i := 0 ; i < v .Len (); i ++ {
97
98
nv , err := populateValue (v .Index (i ), r )
98
99
if err != nil {
99
- return v , fmt .Errorf ("array index %d : %w" , i , err )
100
+ return v , xerrors .Errorf ("array index %d : %w" , i , err )
100
101
}
101
102
v .Index (i ).Set (nv )
102
103
}
@@ -108,11 +109,11 @@ func populateValue(v reflect.Value, r *Random) (reflect.Value, error) {
108
109
kv := reflect .New (v .Type ().Elem ())
109
110
k , err = populateValue (k , r )
110
111
if err != nil {
111
- return v , fmt .Errorf ("map key : %w" , err )
112
+ return v , xerrors .Errorf ("map key : %w" , err )
112
113
}
113
114
kv , err = populateValue (kv , r )
114
115
if err != nil {
115
- return v , fmt .Errorf ("map value : %w" , err )
116
+ return v , xerrors .Errorf ("map value : %w" , err )
116
117
}
117
118
118
119
m .SetMapIndex (k , kv )
@@ -123,7 +124,7 @@ func populateValue(v reflect.Value, r *Random) (reflect.Value, error) {
123
124
s := reflect .MakeSlice (v .Type (), 2 , 2 )
124
125
sv , err := populateValue (reflect .New (v .Type ().Elem ()), r )
125
126
if err != nil {
126
- return v , fmt .Errorf ("slice value : %w" , err )
127
+ return v , xerrors .Errorf ("slice value : %w" , err )
127
128
}
128
129
129
130
s .Index (0 ).Set (sv )
@@ -133,9 +134,9 @@ func populateValue(v reflect.Value, r *Random) (reflect.Value, error) {
133
134
return s , nil
134
135
case reflect .Uintptr , reflect .UnsafePointer , reflect .Chan , reflect .Func , reflect .Interface :
135
136
// Unsupported
136
- return v , fmt .Errorf ("%s is not supported" , v .Kind ())
137
+ return v , xerrors .Errorf ("%s is not supported" , v .Kind ())
137
138
default :
138
- return v , fmt .Errorf ("unsupported kind %s" , v .Kind ())
139
+ return v , xerrors .Errorf ("unsupported kind %s" , v .Kind ())
139
140
}
140
141
return v , nil
141
142
}
0 commit comments