-
-
Notifications
You must be signed in to change notification settings - Fork 15
Open
Description
hello,
consider a test comparing two strings that _do not end with a newline:
func TestNoNewline(t *testing.T) {
want := "banana"
have := "mango"
assert.Equal(t, want, have)
}the output will be:
foo_test.go:156: Expected values to be equal:
-banana
\ No newline at end of file
+mango
\ No newline at end of file
which is quite confusing: sure, there is no newline at the end of the "file", but it is on purpose :-)
I would expect simply:
foo_test.go:156: Expected values to be equal:
-banana
+mango
If I change diff() as follows:
diff --git a/assert.go b/assert.go
index d2df971a5f..1692e38afd 100644
--- a/assert.go
+++ b/assert.go
@@ -194,8 +194,8 @@ func diff[T any](lhs, rhs T) string {
var lhss, rhss string
// Special case strings so we get nice diffs.
if l, ok := any(lhs).(string); ok {
- lhss = l
- rhss = any(rhs).(string)
+ lhss = l + "\n"
+ rhss = any(rhs).(string) + "\n"
} else {
lhss = repr.String(lhs, repr.Indent(" ")) + "\n"
rhss = repr.String(rhs, repr.Indent(" ")) + "\n"
I get the following 4 cases, which seem reasonable to me:
Case 1
func TestNoNewline(t *testing.T) {
want := "banana"
have := "mango"
assert.Equal(t, want, have)
}gives:
marco_test.go:12: Expected values to be equal:
-banana
+mango
--- FAIL: TestNoNewline (0.00s)
Case 2
func TestWithNewline1(t *testing.T) {
want := "banana\n"
have := "mango"
assert.Equal(t, want, have)
}gives:
marco_test.go:18: Expected values to be equal:
-banana
-
+mango
--- FAIL: TestWithNewline1 (0.00s)
Case 3
func TestWithNewline2(t *testing.T) {
want := "banana"
have := "mango\n"
assert.Equal(t, want, have)
}gives
marco_test.go:24: Expected values to be equal:
-banana
+mango
+
--- FAIL: TestWithNewline2 (0.00s)
Case 4
func TestWithNewline(t *testing.T) {
want := "banana\n"
have := "mango\n"
assert.Equal(t, want, have)
}gives:
marco_test.go:18: Expected values to be equal:
-banana
+mango
<-- blank like, but doesn't seem to be a problem
--- FAIL: TestWithNewline (0.00s)
If you see value, I will be happy to provide a PR.
sunesimonsen
Metadata
Metadata
Assignees
Labels
No labels