Skip to content

Commit 29347e2

Browse files
authored
Merge pull request #270 from snyk/fix/component-extension-merge
fix: component extension merge
2 parents 54e762a + a93a544 commit 29347e2

File tree

4 files changed

+19
-6
lines changed

4 files changed

+19
-6
lines changed

merge.go

+3
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ func mergeTags(dst, src *openapi3.T, replace bool) {
5858
}
5959

6060
func initDestinationComponents(dst, src *openapi3.T) {
61+
if src.Components.Extensions != nil && dst.Components.Extensions == nil {
62+
dst.Components.Extensions = make(map[string]interface{})
63+
}
6164
if src.Components.Schemas != nil && dst.Components.Schemas == nil {
6265
dst.Components.Schemas = make(map[string]*openapi3.SchemaRef)
6366
}

merge_test.go

+12
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ func TestMergeComponents(t *testing.T) {
3030
dst := mustLoadFile(c, "merge_test_dst.yaml")
3131
vervet.Merge(dst, src, false)
3232

33+
c.Assert(dst.Components.Extensions["x-snyk-extension-0"], openapiCmp, dstOrig.Components.Extensions["x-snyk-extension-0"])
34+
c.Assert(dst.Components.Extensions["x-snyk-extension-1"], openapiCmp, dstOrig.Components.Extensions["x-snyk-extension-1"])
35+
c.Assert(dst.Components.Extensions["x-snyk-extension-2"], openapiCmp, src.Components.Extensions["x-snyk-extension-2"])
36+
3337
c.Assert(dst.Components.Schemas["Foo"], openapiCmp, dstOrig.Components.Schemas["Foo"])
3438
c.Assert(dst.Components.Schemas["Bar"], openapiCmp, src.Components.Schemas["Bar"])
3539
c.Assert(dst.Components.Schemas["Baz"], openapiCmp, dstOrig.Components.Schemas["Baz"])
@@ -66,6 +70,10 @@ func TestMergeComponents(t *testing.T) {
6670
dst := mustLoadFile(c, "merge_test_dst.yaml")
6771
vervet.Merge(dst, src, true)
6872

73+
c.Assert(dst.Components.Extensions["x-snyk-extension-0"], openapiCmp, dstOrig.Components.Extensions["x-snyk-extension-0"])
74+
c.Assert(dst.Components.Extensions["x-snyk-extension-1"], openapiCmp, src.Components.Extensions["x-snyk-extension-1"])
75+
c.Assert(dst.Components.Extensions["x-snyk-extension-2"], openapiCmp, src.Components.Extensions["x-snyk-extension-2"])
76+
6977
c.Assert(dst.Components.Schemas["Foo"], openapiCmp, src.Components.Schemas["Foo"])
7078
c.Assert(dst.Components.Schemas["Bar"], openapiCmp, src.Components.Schemas["Bar"])
7179
c.Assert(dst.Components.Schemas["Baz"], openapiCmp, dstOrig.Components.Schemas["Baz"])
@@ -102,6 +110,10 @@ func TestMergeComponents(t *testing.T) {
102110
dst := mustLoadFile(c, "merge_test_dst_missing_components.yaml")
103111
vervet.Merge(dst, src, true)
104112

113+
c.Assert(dst.Components.Extensions["x-snyk-extension-0"], openapiCmp, dstOrig.Components.Extensions["x-snyk-extension-0"])
114+
c.Assert(dst.Components.Extensions["x-snyk-extension-1"], openapiCmp, src.Components.Extensions["x-snyk-extension-1"])
115+
c.Assert(dst.Components.Extensions["x-snyk-extension-2"], openapiCmp, src.Components.Extensions["x-snyk-extension-2"])
116+
105117
c.Assert(dst.Components.Schemas["Foo"], openapiCmp, src.Components.Schemas["Foo"])
106118
c.Assert(dst.Components.Schemas["Bar"], openapiCmp, src.Components.Schemas["Bar"])
107119
c.Assert(dst.Components.Schemas["Baz"], openapiCmp, dstOrig.Components.Schemas["Baz"])

testdata/merge_test_dst.yaml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
components:
2+
x-snyk-extension-0: "extension-0"
3+
x-snyk-extension-1: "extension-1"
24
schemas:
35
Foo:
46
type: object
@@ -73,6 +75,3 @@ components:
7375
value: foo-natured
7476
Baz:
7577
value: bazil
76-
x-extension:
77-
key0: value0
78-
key1: value1

testdata/merge_test_src.yaml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
components:
2+
x-snyk-extension-1: "extension-11"
3+
x-snyk-extension-2: "extension-2"
24
schemas:
35
Foo:
46
type: object
@@ -69,6 +71,3 @@ components:
6971
value: foo
7072
Bar:
7173
value: bar
72-
x-extension:
73-
key1: value11
74-
key2: value2

0 commit comments

Comments
 (0)