7 "github.com/charmbracelet/x/exp/golden"
8 "github.com/opencode-ai/opencode/internal/exp/diffview"
11//go:embed testdata/TestDefault.before
12var TestDefaultBefore string
14//go:embed testdata/TestDefault.after
15var TestDefaultAfter string
17//go:embed testdata/TestMultipleHunks.before
18var TestMultipleHunksBefore string
20//go:embed testdata/TestMultipleHunks.after
21var TestMultipleHunksAfter string
23//go:embed testdata/TestNarrow.before
24var TestNarrowBefore string
26//go:embed testdata/TestNarrow.after
27var TestNarrowAfter string
30 TestFunc func(dv *diffview.DiffView) *diffview.DiffView
31 TestFuncs map[string]TestFunc
35 UnifiedFunc = func(dv *diffview.DiffView) *diffview.DiffView {
38 SplitFunc = func(dv *diffview.DiffView) *diffview.DiffView {
42 DefaultFunc = func(dv *diffview.DiffView) *diffview.DiffView {
44 Before("main.go", TestDefaultBefore).
45 After("main.go", TestDefaultAfter)
47 NoLineNumbersFunc = func(dv *diffview.DiffView) *diffview.DiffView {
49 Before("main.go", TestDefaultBefore).
50 After("main.go", TestDefaultAfter).
53 MultipleHunksFunc = func(dv *diffview.DiffView) *diffview.DiffView {
55 Before("main.go", TestMultipleHunksBefore).
56 After("main.go", TestMultipleHunksAfter)
58 CustomContextLinesFunc = func(dv *diffview.DiffView) *diffview.DiffView {
60 Before("main.go", TestMultipleHunksBefore).
61 After("main.go", TestMultipleHunksAfter).
64 NarrowFunc = func(dv *diffview.DiffView) *diffview.DiffView {
66 Before("text.txt", TestNarrowBefore).
67 After("text.txt", TestNarrowAfter)
70 LightModeFunc = func(dv *diffview.DiffView) *diffview.DiffView {
71 return dv.Style(diffview.DefaultLightStyle)
73 DarkModeFunc = func(dv *diffview.DiffView) *diffview.DiffView {
74 return dv.Style(diffview.DefaultDarkStyle)
77 LayoutFuncs = TestFuncs{
78 "Unified": UnifiedFunc,
81 BehaviorFuncs = TestFuncs{
82 "Default": DefaultFunc,
83 "NoLineNumbers": NoLineNumbersFunc,
84 "MultipleHunks": MultipleHunksFunc,
85 "CustomContextLines": CustomContextLinesFunc,
88 ThemeFuncs = TestFuncs{
89 "LightMode": LightModeFunc,
90 "DarkMode": DarkModeFunc,
94func TestDiffView(t *testing.T) {
95 for layoutName, layoutFunc := range LayoutFuncs {
96 t.Run(layoutName, func(t *testing.T) {
97 for behaviorName, behaviorFunc := range BehaviorFuncs {
98 t.Run(behaviorName, func(t *testing.T) {
99 for themeName, themeFunc := range ThemeFuncs {
100 t.Run(themeName, func(t *testing.T) {
103 dv = behaviorFunc(dv)
105 golden.RequireEqual(t, []byte(dv.String()))
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list