Skip to content

Commit 3534f67

Browse files
committed
fixes replacement of /releases/name=os-conf? where last token was marked optional
1 parent 906c57a commit 3534f67

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

patch/replace_op.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,13 @@ func (op ReplaceOp) Apply(doc interface{}) (interface{}, error) {
7272
}
7373

7474
if typedToken.Optional && len(idxs) == 0 {
75-
obj = map[interface{}]interface{}{typedToken.Key: typedToken.Value}
76-
prevUpdate(append(typedObj, obj))
77-
// no need to change prevUpdate since matching item can only be a map
75+
if isLast {
76+
prevUpdate(append(typedObj, op.Value))
77+
} else {
78+
obj = map[interface{}]interface{}{typedToken.Key: typedToken.Value}
79+
prevUpdate(append(typedObj, obj))
80+
// no need to change prevUpdate since matching item can only be a map
81+
}
7882
} else {
7983
if len(idxs) != 1 {
8084
return nil, opMultipleMatchingIndexErr{NewPointer(tokens[:i+2]), idxs}

patch/replace_op_test.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -233,9 +233,7 @@ var _ = Describe("ReplaceOp.Apply", func() {
233233
map[interface{}]interface{}{"xyz": "xyz"},
234234
map[interface{}]interface{}{
235235
"name": "val",
236-
"efg": []interface{}{
237-
map[interface{}]interface{}{"name": "val"},
238-
},
236+
"efg": []interface{}{1},
239237
},
240238
}))
241239
})

0 commit comments

Comments
 (0)