Skip to content

Commit e3d25ea

Browse files
committed
Use regex for error messages expectations in tests
1 parent 32fe286 commit e3d25ea

File tree

1 file changed

+38
-46
lines changed

1 file changed

+38
-46
lines changed

params/json.libevm_test.go

Lines changed: 38 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -153,31 +153,30 @@ func TestUnmarshalChainConfigJSON(t *testing.T) {
153153
}
154154

155155
testCases := map[string]struct {
156-
jsonData string // string for convenience
157-
extra *testExtra
158-
reuseJSONRoot bool
159-
wantConfig ChainConfig
160-
wantExtra any
161-
wantErrMessage string
156+
jsonData string // string for convenience
157+
extra *testExtra
158+
reuseJSONRoot bool
159+
wantConfig ChainConfig
160+
wantExtra any
161+
wantErrRegex string
162162
}{
163163
"invalid_json": {
164-
extra: &testExtra{},
165-
wantExtra: &testExtra{},
166-
wantErrMessage: `decoding JSON into combination of *params.ChainConfig and *params.testExtra (as "extra" key): ` +
167-
"unexpected end of JSON input",
164+
extra: &testExtra{},
165+
wantExtra: &testExtra{},
166+
wantErrRegex: `^decoding JSON into combination of \*.+\.ChainConfig and \*.+\.testExtra \(as "extra" key\): .+$`,
168167
},
169168
"nil_extra_at_root_depth": {
170-
jsonData: `{"chainId": 1}`,
171-
extra: nil,
172-
reuseJSONRoot: true,
173-
wantExtra: (*testExtra)(nil),
174-
wantErrMessage: "*params.testExtra argument is nil; use *params.ChainConfig.UnmarshalJSON() directly",
169+
jsonData: `{"chainId": 1}`,
170+
extra: nil,
171+
reuseJSONRoot: true,
172+
wantExtra: (*testExtra)(nil),
173+
wantErrRegex: `^\*.+.testExtra argument is nil; use \*.+\.ChainConfig\.UnmarshalJSON\(\) directly$`,
175174
},
176175
"nil_extra_at_extra_key": {
177-
jsonData: `{"chainId": 1}`,
178-
extra: nil,
179-
wantExtra: (*testExtra)(nil),
180-
wantErrMessage: "*params.testExtra argument is nil; use *params.ChainConfig.UnmarshalJSON() directly",
176+
jsonData: `{"chainId": 1}`,
177+
extra: nil,
178+
wantExtra: (*testExtra)(nil),
179+
wantErrRegex: `^\*.+\.testExtra argument is nil; use \*.+\.ChainConfig.UnmarshalJSON\(\) directly$`,
181180
},
182181
"no_extra_at_extra_key": {
183182
jsonData: `{"chainId": 1}`,
@@ -193,23 +192,19 @@ func TestUnmarshalChainConfigJSON(t *testing.T) {
193192
wantExtra: &testExtra{},
194193
},
195194
"wrong_extra_type_at_extra_key": {
196-
jsonData: `{"chainId": 1, "extra": 1}`,
197-
extra: &testExtra{},
198-
wantConfig: ChainConfig{ChainID: big.NewInt(1)},
199-
wantExtra: &testExtra{},
200-
wantErrMessage: `decoding JSON into combination of *params.ChainConfig and *params.testExtra (as "extra" key): ` +
201-
"json: cannot unmarshal number into Go struct field " +
202-
".extra of type params.testExtra",
195+
jsonData: `{"chainId": 1, "extra": 1}`,
196+
extra: &testExtra{},
197+
wantConfig: ChainConfig{ChainID: big.NewInt(1)},
198+
wantExtra: &testExtra{},
199+
wantErrRegex: `^decoding JSON into combination of \*.+\.ChainConfig and \*.+\.testExtra \(as "extra" key\): .+$`,
203200
},
204201
"wrong_extra_type_at_root_depth": {
205202
jsonData: `{"chainId": 1, "field": 1}`,
206203
extra: &testExtra{},
207204
reuseJSONRoot: true,
208205
wantConfig: ChainConfig{ChainID: big.NewInt(1)},
209206
wantExtra: &testExtra{},
210-
wantErrMessage: "decoding JSON into *params.testExtra: " +
211-
"json: cannot unmarshal number into Go struct field " +
212-
"testExtra.field of type string",
207+
wantErrRegex: `^decoding JSON into \*.+\.testExtra: .+`,
213208
},
214209
"extra_success_at_extra_key": {
215210
jsonData: `{"chainId": 1, "extra": {"field":"value"}}`,
@@ -234,10 +229,11 @@ func TestUnmarshalChainConfigJSON(t *testing.T) {
234229
data := []byte(testCase.jsonData)
235230
config := ChainConfig{}
236231
err := UnmarshalChainConfigJSON(data, &config, testCase.extra, testCase.reuseJSONRoot)
237-
if testCase.wantErrMessage == "" {
232+
if testCase.wantErrRegex == "" {
238233
require.NoError(t, err)
239234
} else {
240-
require.EqualError(t, err, testCase.wantErrMessage)
235+
require.Error(t, err)
236+
require.Regexp(t, testCase.wantErrRegex, err.Error())
241237
}
242238
assert.Equal(t, testCase.wantConfig, config)
243239
assert.Equal(t, testCase.wantExtra, testCase.extra)
@@ -249,19 +245,17 @@ func TestMarshalChainConfigJSON(t *testing.T) {
249245
t.Parallel()
250246

251247
testCases := map[string]struct {
252-
config ChainConfig
253-
extra any
254-
reuseJSONRoot bool
255-
wantJSONData string // string for convenience
256-
wantErrMessage string
248+
config ChainConfig
249+
extra any
250+
reuseJSONRoot bool
251+
wantJSONData string // string for convenience
252+
wantErrRegex string
257253
}{
258254
"invalid_extra_at_extra_key": {
259255
extra: struct {
260256
Field chan struct{} `json:"field"`
261257
}{},
262-
wantErrMessage: "encoding combination of params.ChainConfig and " +
263-
`struct { Field chan struct {} "json:\"field\"" } (as "extra" key) to JSON: ` +
264-
"json: unsupported type: chan struct {}",
258+
wantErrRegex: `^encoding combination of .+\.ChainConfig and .+ to JSON: .+$`,
265259
},
266260
"nil_extra_at_extra_key": {
267261
wantJSONData: `{"chainId":null}`,
@@ -277,17 +271,14 @@ func TestMarshalChainConfigJSON(t *testing.T) {
277271
Field chan struct{} `json:"field"`
278272
}{},
279273
reuseJSONRoot: true,
280-
wantErrMessage: "converting extra config to JSON raw messages: " +
281-
`encoding struct { Field chan struct {} "json:\"field\"" }: ` +
282-
"json: unsupported type: chan struct {}",
274+
wantErrRegex: "^converting extra config to JSON raw messages: .+$",
283275
},
284276
"duplicate_key": {
285277
extra: struct {
286278
Field string `json:"chainId"`
287279
}{},
288280
reuseJSONRoot: true,
289-
wantErrMessage: `duplicate JSON key "chainId" in ChainConfig` +
290-
` and extra struct { Field string "json:\"chainId\"" }`,
281+
wantErrRegex: `^duplicate JSON key "chainId" in ChainConfig and extra struct .+$`,
291282
},
292283
"nil_extra_at_root_depth": {
293284
extra: nil,
@@ -310,10 +301,11 @@ func TestMarshalChainConfigJSON(t *testing.T) {
310301

311302
config := ChainConfig{}
312303
data, err := MarshalChainConfigJSON(config, testCase.extra, testCase.reuseJSONRoot)
313-
if testCase.wantErrMessage == "" {
304+
if testCase.wantErrRegex == "" {
314305
require.NoError(t, err)
315306
} else {
316-
require.EqualError(t, err, testCase.wantErrMessage)
307+
require.Error(t, err)
308+
assert.Regexp(t, testCase.wantErrRegex, err.Error())
317309
}
318310
assert.Equal(t, testCase.wantJSONData, string(data))
319311
})

0 commit comments

Comments
 (0)