Skip to content

Commit a7065ec

Browse files
endigmaatombender
authored andcommitted
Revert to shellout diffing & update tests go version
1 parent f99a985 commit a7065ec

File tree

2 files changed

+58
-2
lines changed

2 files changed

+58
-2
lines changed

tests/dump_test.go

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package tests_test
22

33
import (
4+
"errors"
45
"fmt"
56
"io"
67
"os"
8+
"os/exec"
79
"reflect"
810
"testing"
911
"time"
1012

1113
"github.com/stretchr/testify/assert"
14+
"github.com/stretchr/testify/require"
1215

1316
"github.com/sanity-io/litter"
1417
)
@@ -291,10 +294,63 @@ func runTestWithCfg(t *testing.T, name string, cfg *litter.Options, cases ...any
291294
return
292295
}
293296

294-
assert.Equal(t, string(reference), dump)
297+
assertEqualStringsWithDiff(t, string(reference), dump)
295298
})
296299
}
297300

301+
func diffStrings(t *testing.T, expected, actual string) (*string, bool) {
302+
if actual == expected {
303+
return nil, true
304+
}
305+
306+
dir, err := os.MkdirTemp("", "test")
307+
require.NoError(t, err)
308+
defer os.RemoveAll(dir)
309+
310+
require.NoError(t, os.WriteFile(fmt.Sprintf("%s/expected", dir), []byte(expected), 0644))
311+
require.NoError(t, os.WriteFile(fmt.Sprintf("%s/actual", dir), []byte(actual), 0644))
312+
313+
out, err := exec.Command("diff", "--side-by-side",
314+
fmt.Sprintf("%s/expected", dir),
315+
fmt.Sprintf("%s/actual", dir)).Output()
316+
317+
var exitErr *exec.ExitError
318+
if !errors.As(err, &exitErr) {
319+
require.NoError(t, err)
320+
}
321+
322+
diff := string(out)
323+
return &diff, false
324+
}
325+
326+
func assertEqualStringsWithDiff(t *testing.T, expected, actual string,
327+
msgAndArgs ...interface{}) bool {
328+
diff, ok := diffStrings(t, expected, actual)
329+
if ok {
330+
return true
331+
}
332+
333+
message := messageFromMsgAndArgs(msgAndArgs...)
334+
if message == "" {
335+
message = "Strings are different"
336+
}
337+
assert.Fail(t, fmt.Sprintf("%s (left is expected, right is actual):\n%s", message, *diff))
338+
return false
339+
}
340+
341+
func messageFromMsgAndArgs(msgAndArgs ...interface{}) string {
342+
if len(msgAndArgs) == 0 || msgAndArgs == nil {
343+
return ""
344+
}
345+
if len(msgAndArgs) == 1 {
346+
return msgAndArgs[0].(string)
347+
}
348+
if len(msgAndArgs) > 1 {
349+
return fmt.Sprintf(msgAndArgs[0].(string), msgAndArgs[1:]...)
350+
}
351+
return ""
352+
}
353+
298354
func runTests(t *testing.T, name string, cases ...any) {
299355
runTestWithCfg(t, name, &standardCfg, cases...)
300356
}

tests/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/sanity-io/litter/tests
22

3-
go 1.23.7
3+
go 1.24.2
44

55
require (
66
github.com/sanity-io/litter v1.5.8

0 commit comments

Comments
 (0)