diffview_test.go

  1package diffview_test
  2
  3import (
  4	_ "embed"
  5	"testing"
  6
  7	"github.com/charmbracelet/x/exp/golden"
  8	"github.com/opencode-ai/opencode/internal/exp/diffview"
  9)
 10
 11//go:embed testdata/TestDefault.before
 12var TestDefaultBefore string
 13
 14//go:embed testdata/TestDefault.after
 15var TestDefaultAfter string
 16
 17//go:embed testdata/TestMultipleHunks.before
 18var TestMultipleHunksBefore string
 19
 20//go:embed testdata/TestMultipleHunks.after
 21var TestMultipleHunksAfter string
 22
 23//go:embed testdata/TestNarrow.before
 24var TestNarrowBefore string
 25
 26//go:embed testdata/TestNarrow.after
 27var TestNarrowAfter string
 28
 29func TestDefault(t *testing.T) {
 30	dv := diffview.New().
 31		Before("main.go", TestDefaultBefore).
 32		After("main.go", TestDefaultAfter)
 33
 34	t.Run("LightMode", func(t *testing.T) {
 35		dv = dv.Style(diffview.DefaultLightStyle)
 36		golden.RequireEqual(t, []byte(dv.String()))
 37	})
 38
 39	t.Run("DarkMode", func(t *testing.T) {
 40		dv = dv.Style(diffview.DefaultDarkStyle)
 41		golden.RequireEqual(t, []byte(dv.String()))
 42	})
 43}
 44
 45func TestNoLineNumbers(t *testing.T) {
 46	dv := diffview.New().
 47		Before("main.go", TestDefaultBefore).
 48		After("main.go", TestDefaultAfter).
 49		LineNumbers(false)
 50
 51	t.Run("LightMode", func(t *testing.T) {
 52		dv = dv.Style(diffview.DefaultLightStyle)
 53		golden.RequireEqual(t, []byte(dv.String()))
 54	})
 55
 56	t.Run("DarkMode", func(t *testing.T) {
 57		dv = dv.Style(diffview.DefaultDarkStyle)
 58		golden.RequireEqual(t, []byte(dv.String()))
 59	})
 60}
 61
 62func TestMultipleHunks(t *testing.T) {
 63	dv := diffview.New().
 64		Before("main.go", TestMultipleHunksBefore).
 65		After("main.go", TestMultipleHunksAfter)
 66
 67	t.Run("LightMode", func(t *testing.T) {
 68		dv = dv.Style(diffview.DefaultLightStyle)
 69		golden.RequireEqual(t, []byte(dv.String()))
 70	})
 71
 72	t.Run("DarkMode", func(t *testing.T) {
 73		dv = dv.Style(diffview.DefaultDarkStyle)
 74		golden.RequireEqual(t, []byte(dv.String()))
 75	})
 76}
 77
 78func TestCustomContextLines(t *testing.T) {
 79	dv := diffview.New().
 80		Before("main.go", TestMultipleHunksBefore).
 81		After("main.go", TestMultipleHunksAfter).
 82		ContextLines(4)
 83
 84	t.Run("LightMode", func(t *testing.T) {
 85		dv = dv.Style(diffview.DefaultLightStyle)
 86		golden.RequireEqual(t, []byte(dv.String()))
 87	})
 88
 89	t.Run("DarkMode", func(t *testing.T) {
 90		dv = dv.Style(diffview.DefaultDarkStyle)
 91		golden.RequireEqual(t, []byte(dv.String()))
 92	})
 93}
 94
 95func TestNarrow(t *testing.T) {
 96	dv := diffview.New().
 97		Before("text.txt", TestNarrowBefore).
 98		After("text.txt", TestNarrowAfter)
 99
100	t.Run("LightMode", func(t *testing.T) {
101		dv = dv.Style(diffview.DefaultLightStyle)
102		golden.RequireEqual(t, []byte(dv.String()))
103	})
104
105	t.Run("DarkMode", func(t *testing.T) {
106		dv = dv.Style(diffview.DefaultDarkStyle)
107		golden.RequireEqual(t, []byte(dv.String()))
108	})
109}