diff --git a/testutil/testutil.go b/testutil/testutil.go index cde0e4f91..06b9747ca 100644 --- a/testutil/testutil.go +++ b/testutil/testutil.go @@ -58,10 +58,21 @@ func NotOk(tb testing.TB, err error) { } // Equals fails the test if exp is not equal to act. -func Equals(tb testing.TB, exp, act interface{}) { +func Equals(tb testing.TB, exp, act interface{}, msgAndArgs ...interface{}) { if !reflect.DeepEqual(exp, act) { _, file, line, _ := runtime.Caller(1) - fmt.Printf("\033[31m%s:%d:\n\n\texp: %#v\n\n\tgot: %#v\033[39m\n\n", filepath.Base(file), line, exp, act) + fmt.Printf("\033[31m%s:%d:%s\n\n\texp: %#v\n\n\tgot: %#v\033[39m\n\n", filepath.Base(file), line, formatMessage(msgAndArgs), exp, act) tb.FailNow() } } + +func formatMessage(msgAndArgs []interface{}) string { + if len(msgAndArgs) == 0 { + return "" + } + + if msg, ok := msgAndArgs[0].(string); ok { + return fmt.Sprintf("\n\nmsg: "+msg, msgAndArgs[1:]...) + } + return "" +} diff --git a/wal/wal_test.go b/wal/wal_test.go index 72f46253f..6152a90fd 100644 --- a/wal/wal_test.go +++ b/wal/wal_test.go @@ -144,7 +144,7 @@ func TestReader(t *testing.T) { if j >= len(c.exp) { t.Fatal("received more records than inserted") } - testutil.Equals(t, c.exp[j], rec) + testutil.Equals(t, c.exp[j], rec, "Bytes within record did not match expected Bytes") } if !c.fail && r.Err() != nil { t.Fatalf("unexpected error: %s", r.Err()) @@ -256,6 +256,7 @@ func TestWAL_Repair(t *testing.T) { // We create 3 segments with 3 records each and then corrupt the 2nd record // of the 2nd segment. // As a result we want a repaired WAL with the first 4 records intact. + intactRecords := 4 w, err := NewSize(nil, nil, dir, 3*pageSize) testutil.Ok(t, err) @@ -306,7 +307,7 @@ func TestWAL_Repair(t *testing.T) { result = append(result, append(b, r.Record()...)) } testutil.Ok(t, r.Err()) - testutil.Equals(t, 4, len(result)) + testutil.Equals(t, intactRecords, len(result), "Wrong number of intact records") for i, r := range result { if !bytes.Equal(records[i], r) {