on main help sign in
refactor(diffview): refactor tests to be table driven
commita947f597388efb57b755099b4e57b2f020eee646 authorAndrey Nering <andreynering@users.noreply.github.com> dateFri 6 Jun 2025, 13:53 (1 year ago) parent67fe93e
11 files changed+77−78
internal/exp/diffview/diffview_test.go+77−78 internal/exp/diffview/testdata/TestCustomContextLines/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.golden internal/exp/diffview/testdata/TestCustomContextLines/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.golden internal/exp/diffview/testdata/TestDefault/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.golden internal/exp/diffview/testdata/TestDefault/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.golden internal/exp/diffview/testdata/TestMultipleHunks/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.golden internal/exp/diffview/testdata/TestMultipleHunks/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.golden internal/exp/diffview/testdata/TestNarrow/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.golden internal/exp/diffview/testdata/TestNarrow/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.golden internal/exp/diffview/testdata/TestNoLineNumbers/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.golden internal/exp/diffview/testdata/TestNoLineNumbers/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.golden
internal/exp/diffview/diffview_test.go+77−78
@@ -26,84 +26,83 @@ var TestNarrowBefore string
2626//go:embed testdata/TestNarrow.after
2727var TestNarrowAfter string
2828
29−func 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−
45−func 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−
62−func 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−
78−func 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−
95−func TestNarrow(t *testing.T) {
96− dv := diffview.New().
97− Before("text.txt", TestNarrowBefore).
98− After("text.txt", TestNarrowAfter)
29+type (
30+ TestFunc func(dv *diffview.DiffView) *diffview.DiffView
31+ TestFuncs map[string]TestFunc
32+)
9933
100− t.Run("LightMode", func(t *testing.T) {
101− dv = dv.Style(diffview.DefaultLightStyle)
102− golden.RequireEqual(t, []byte(dv.String()))
103− })
34+var (
35+ UnifiedFunc = func(dv *diffview.DiffView) *diffview.DiffView {
36+ return dv.Unified()
37+ }
38+
39+ DefaultFunc = func(dv *diffview.DiffView) *diffview.DiffView {
40+ return dv.
41+ Before("main.go", TestDefaultBefore).
42+ After("main.go", TestDefaultAfter)
43+ }
44+ NoLineNumbersFunc = func(dv *diffview.DiffView) *diffview.DiffView {
45+ return dv.
46+ Before("main.go", TestDefaultBefore).
47+ After("main.go", TestDefaultAfter).
48+ LineNumbers(false)
49+ }
50+ MultipleHunksFunc = func(dv *diffview.DiffView) *diffview.DiffView {
51+ return dv.
52+ Before("main.go", TestMultipleHunksBefore).
53+ After("main.go", TestMultipleHunksAfter)
54+ }
55+ CustomContextLinesFunc = func(dv *diffview.DiffView) *diffview.DiffView {
56+ return dv.
57+ Before("main.go", TestMultipleHunksBefore).
58+ After("main.go", TestMultipleHunksAfter).
59+ ContextLines(4)
60+ }
61+ NarrowFunc = func(dv *diffview.DiffView) *diffview.DiffView {
62+ return dv.
63+ Before("text.txt", TestNarrowBefore).
64+ After("text.txt", TestNarrowAfter)
65+ }
66+
67+ LightModeFunc = func(dv *diffview.DiffView) *diffview.DiffView {
68+ return dv.Style(diffview.DefaultLightStyle)
69+ }
70+ DarkModeFunc = func(dv *diffview.DiffView) *diffview.DiffView {
71+ return dv.Style(diffview.DefaultDarkStyle)
72+ }
73+
74+ LayoutFuncs = TestFuncs{
75+ "Unified": UnifiedFunc,
76+ }
77+ BehaviorFuncs = TestFuncs{
78+ "Default": DefaultFunc,
79+ "NoLineNumbers": NoLineNumbersFunc,
80+ "MultipleHunks": MultipleHunksFunc,
81+ "CustomContextLines": CustomContextLinesFunc,
82+ "Narrow": NarrowFunc,
83+ }
84+ ThemeFuncs = TestFuncs{
85+ "LightMode": LightModeFunc,
86+ "DarkMode": DarkModeFunc,
87+ }
88+)
10489
105− t.Run("DarkMode", func(t *testing.T) {
106− dv = dv.Style(diffview.DefaultDarkStyle)
107− golden.RequireEqual(t, []byte(dv.String()))
108− })
90+func TestDiffView(t *testing.T) {
91+ for layoutName, layoutFunc := range LayoutFuncs {
92+ t.Run(layoutName, func(t *testing.T) {
93+ for behaviorName, behaviorFunc := range BehaviorFuncs {
94+ t.Run(behaviorName, func(t *testing.T) {
95+ for themeName, themeFunc := range ThemeFuncs {
96+ t.Run(themeName, func(t *testing.T) {
97+ dv := diffview.New()
98+ dv = layoutFunc(dv)
99+ dv = behaviorFunc(dv)
100+ dv = themeFunc(dv)
101+ golden.RequireEqual(t, []byte(dv.String()))
102+ })
103+ }
104+ })
105+ }
106+ })
107+ }
109108}
internal/exp/diffview/testdata/TestCustomContextLines/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/DarkMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestCustomContextLines/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/CustomContextLines/LightMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestDefault/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Default/DarkMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestDefault/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Default/LightMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestMultipleHunks/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/DarkMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestMultipleHunks/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/MultipleHunks/LightMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestNarrow/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/DarkMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestNarrow/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/Narrow/LightMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestNoLineNumbers/DarkMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/DarkMode.goldenrenamed

The content is the same.

internal/exp/diffview/testdata/TestNoLineNumbers/LightMode.golden → internal/exp/diffview/testdata/TestDiffView/Unified/NoLineNumbers/LightMode.goldenrenamed

The content is the same.