1
2
3
4 package filters_test
5
6 import (
7 "path/filepath"
8 "runtime"
9 "testing"
10
11 "github.com/stretchr/testify/assert"
12 "sigs.k8s.io/kustomize/kyaml/copyutil"
13 "sigs.k8s.io/kustomize/kyaml/filesys"
14 "sigs.k8s.io/kustomize/kyaml/kio/filters"
15 "sigs.k8s.io/kustomize/kyaml/testutil"
16 )
17
18 func TestMerge3_Merge(t *testing.T) {
19
20 testutil.SkipWindows(t)
21
22 _, datadir, _, ok := runtime.Caller(0)
23 if !assert.True(t, ok) {
24 t.FailNow()
25 }
26 datadir = filepath.Join(filepath.Dir(datadir), "testdata")
27
28
29 dir := t.TempDir()
30
31 if !assert.NoError(t, copyutil.CopyDir(
32 filesys.MakeFsOnDisk(),
33 filepath.Join(datadir, "dataset1-localupdates"),
34 filepath.Join(dir, "dataset1"))) {
35 t.FailNow()
36 }
37
38 err := filters.Merge3{
39 OriginalPath: filepath.Join(datadir, "dataset1"),
40 UpdatedPath: filepath.Join(datadir, "dataset1-remoteupdates"),
41 DestPath: filepath.Join(dir, "dataset1"),
42 Matcher: &filters.DefaultGVKNNMatcher{MergeOnPath: false},
43 }.Merge()
44 if !assert.NoError(t, err) {
45 t.FailNow()
46 }
47
48 diffs, err := copyutil.Diff(
49 filepath.Join(dir, "dataset1"),
50 filepath.Join(datadir, "dataset1-expected"))
51 if !assert.NoError(t, err) {
52 t.FailNow()
53 }
54 if !assert.Empty(t, diffs.List()) {
55 t.FailNow()
56 }
57 }
58
59
60
61 func TestMerge3_Merge_path(t *testing.T) {
62
63 testutil.SkipWindows(t)
64
65 _, datadir, _, ok := runtime.Caller(0)
66 if !assert.True(t, ok) {
67 t.FailNow()
68 }
69 datadir = filepath.Join(filepath.Dir(datadir), "testdata2")
70
71
72 dir := t.TempDir()
73
74 if !assert.NoError(t, copyutil.CopyDir(
75 filesys.MakeFsOnDisk(),
76 filepath.Join(datadir, "dataset1-localupdates"),
77 filepath.Join(dir, "dataset1"))) {
78 t.FailNow()
79 }
80
81 err := filters.Merge3{
82 OriginalPath: filepath.Join(datadir, "dataset1"),
83 UpdatedPath: filepath.Join(datadir, "dataset1-remoteupdates"),
84 DestPath: filepath.Join(dir, "dataset1"),
85 }.Merge()
86 if !assert.NoError(t, err) {
87 t.FailNow()
88 }
89
90 diffs, err := copyutil.Diff(
91 filepath.Join(dir, "dataset1"),
92 filepath.Join(datadir, "dataset1-expected"))
93 if !assert.NoError(t, err) {
94 t.FailNow()
95 }
96 if !assert.Empty(t, diffs.List()) {
97 t.FailNow()
98 }
99 }
100
101
102
103 func TestMerge3_Merge_fail(t *testing.T) {
104
105 testutil.SkipWindows(t)
106
107 _, datadir, _, ok := runtime.Caller(0)
108 if !assert.True(t, ok) {
109 t.FailNow()
110 }
111 datadir = filepath.Join(filepath.Dir(datadir), "testdata2")
112
113
114 dir := t.TempDir()
115
116 if !assert.NoError(t, copyutil.CopyDir(
117 filesys.MakeFsOnDisk(),
118 filepath.Join(datadir, "dataset1-localupdates"),
119 filepath.Join(dir, "dataset1"))) {
120 t.FailNow()
121 }
122
123 err := filters.Merge3{
124 OriginalPath: filepath.Join(datadir, "dataset1"),
125 UpdatedPath: filepath.Join(datadir, "dataset1-remoteupdates"),
126 DestPath: filepath.Join(dir, "dataset1"),
127 Matcher: &filters.DefaultGVKNNMatcher{MergeOnPath: false},
128 }.Merge()
129 if !assert.Error(t, err) {
130 t.FailNow()
131 }
132 }
133
View as plain text