Skip to content

Commit 7fc452a

Browse files
author
filikos
committed
WIP: Adjusted outputs to increase readability
1 parent 3476f31 commit 7fc452a

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

expectations_go18.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,15 @@ func (e *ExpectedQuery) WillReturnRows(rows ...*Rows) *ExpectedQuery {
2929
}
3030

3131
func (e *queryBasedExpectation) argsMatches(args []driver.NamedValue) error {
32+
errMsgFmt := "\nwant\n %d\n got\n %d\n arguments"
3233
if nil == e.args {
3334
if len(args) > 0 {
34-
return fmt.Errorf("expected 0, but got %d arguments", len(args))
35+
return fmt.Errorf(errMsgFmt, 0, len(args))
3536
}
3637
return nil
3738
}
3839
if len(args) != len(e.args) {
39-
return fmt.Errorf("expected %d, but got %d arguments", len(e.args), len(args))
40+
return fmt.Errorf(errMsgFmt, len(e.args), len(args))
4041
}
4142
// @TODO should we assert either all args are named or ordinal?
4243
for k, v := range args {
@@ -53,7 +54,7 @@ func (e *queryBasedExpectation) argsMatches(args []driver.NamedValue) error {
5354
if named, isNamed := dval.(sql.NamedArg); isNamed {
5455
dval = named.Value
5556
if v.Name != named.Name {
56-
return fmt.Errorf("named argument %d: name: \"%s\" does not match expected: \"%s\"", k, v.Name, named.Name)
57+
return fmt.Errorf("named argument %d: name: '%s' does not match expected: '%s'", k, v.Name, named.Name)
5758
}
5859
} else if k+1 != v.Ordinal {
5960
return fmt.Errorf("argument %d: ordinal position: %d does not match expected: %d", k, k+1, v.Ordinal)
@@ -66,12 +67,28 @@ func (e *queryBasedExpectation) argsMatches(args []driver.NamedValue) error {
6667
}
6768

6869
if !reflect.DeepEqual(darg, v.Value) {
69-
return fmt.Errorf("argument %d expected [%T - %+v] does not match actual [%T - %+v]", k, darg, darg, v.Value, v.Value)
70+
71+
return fmt.Errorf("Summary:\nargument %d \nwant: \n type '%T' \n value '%+v' \ngot: \n type '%T' \n value '%+v'",
72+
k,
73+
darg,
74+
darg,
75+
v.Value,
76+
v.Value)
7077
}
7178
}
7279
return nil
7380
}
7481

82+
func errorFormat(argIndex int, expectedType interface{}, expectedValue interface{}, actualType interface{}, actualValue interface{}) error {
83+
return fmt.Errorf("Argument %d \nExpected: \n\tType: '%T' \n\tValue: '%+v' \nReceived: \n\tType: '%T' \n\tValue: '%+v'",
84+
argIndex,
85+
expectedType,
86+
expectedType,
87+
actualType,
88+
actualType)
89+
}
90+
91+
7592
func (e *queryBasedExpectation) attemptArgMatch(args []driver.NamedValue) (err error) {
7693
// catch panic
7794
defer func() {

sqlmock_before_go18.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ func (c *sqlmock) query(query string, args []namedValue) (*ExpectedQuery, error)
9494
}
9595

9696
if err := expected.argsMatches(args); err != nil {
97-
return nil, fmt.Errorf("Query '%s', arguments do not match: %s", query, err)
97+
return nil, fmt.Errorf("Query " + ErrMsgFmt, query, err)
9898
}
9999

100100
expected.triggered = true

sqlmock_go18.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
// +build go1.8
2-
32
package sqlmock
43

54
import (
@@ -242,7 +241,7 @@ func (c *sqlmock) query(query string, args []driver.NamedValue) (*ExpectedQuery,
242241
}
243242

244243
if err := expected.argsMatches(args); err != nil {
245-
return nil, fmt.Errorf("Query '%s', arguments do not match: %s", query, err)
244+
return nil, fmt.Errorf("Query " + errMsgFmt, query, err)
246245
}
247246

248247
expected.triggered = true
@@ -278,6 +277,10 @@ func (c *sqlmock) Exec(query string, args []driver.Value) (driver.Result, error)
278277
return ex.result, nil
279278
}
280279

280+
const (
281+
errMsgFmt = "'%s', \n\narguments do not match: \n %s"
282+
)
283+
281284
func (c *sqlmock) exec(query string, args []driver.NamedValue) (*ExpectedExec, error) {
282285
var expected *ExpectedExec
283286
var fulfilled int
@@ -324,7 +327,7 @@ func (c *sqlmock) exec(query string, args []driver.NamedValue) (*ExpectedExec, e
324327
}
325328

326329
if err := expected.argsMatches(args); err != nil {
327-
return nil, fmt.Errorf("ExecQuery '%s', arguments do not match: %s", query, err)
330+
return nil, fmt.Errorf("ExecQuery: " + errMsgFmt, query, err)
328331
}
329332

330333
expected.triggered = true
@@ -333,7 +336,7 @@ func (c *sqlmock) exec(query string, args []driver.NamedValue) (*ExpectedExec, e
333336
}
334337

335338
if expected.result == nil {
336-
return nil, fmt.Errorf("ExecQuery '%s' with args %+v, must return a database/sql/driver.Result, but it was not set for expectation %T as %+v", query, args, expected, expected)
339+
return nil, fmt.Errorf("\nExecQuery '%s' with args %+v, must return a database/sql/driver.Result, but it was not set for expectation %T as %+v", query, args, expected, expected)
337340
}
338341

339342
return expected, nil

0 commit comments

Comments
 (0)