Skip to content

Commit

Permalink
add test for extended patch with overlapping patches
Browse files Browse the repository at this point in the history
  • Loading branch information
Liujingfang1 committed Jul 16, 2019
1 parent 6f74419 commit ed0cfc6
Show file tree
Hide file tree
Showing 3 changed files with 233 additions and 8 deletions.
223 changes: 223 additions & 0 deletions pkg/target/extendedpatch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -922,3 +922,226 @@ spec:
app: busybox
`)
}

func TestExtendedPatchNoMatchMultiplePatch(t *testing.T) {
th := kusttest_test.NewKustTestHarness(t, "/app/base")
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
- deployment.yaml
- service.yaml
patches:
- path: patch.yaml
target:
name: no-match
- path: patch.yaml
target:
name: busybox
kind: Job
`)
th.WriteF("/app/base/patch.yaml", `
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: busybox
annotations:
new-key: new-value
`)
m, err := th.MakeKustTarget().MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /tmp/ps
name: nginx-persistent-storage
volumes:
- emptyDir: {}
name: nginx-persistent-storage
- configMap:
name: configmap-in-base
name: configmap-in-base
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
app: busybox
name: busybox
spec:
template:
metadata:
labels:
app: busybox
spec:
containers:
- image: busybox
name: busybox
volumeMounts:
- mountPath: /tmp/ps
name: busybox-persistent-storage
volumes:
- emptyDir: {}
name: busybox-persistent-storage
- configMap:
name: configmap-in-base
name: configmap-in-base
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: Service
metadata:
labels:
app: busybox
name: busybox
spec:
ports:
- port: 8080
selector:
app: busybox
`)
}

func TestExtendedPatchMultiplePatchOverlapping(t *testing.T) {
th := kusttest_test.NewKustTestHarness(t, "/app/base")
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
- deployment.yaml
- service.yaml
patches:
- path: patch1.yaml
target:
labelSelector: app=busybox
- path: patch2.yaml
target:
name: busybox
kind: Deployment
`)
th.WriteF("/app/base/patch1.yaml", `
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: busybox
annotations:
new-key-from-patch1: new-value
`)
th.WriteF("/app/base/patch2.yaml", `
apiVersion: apps/v1beta2
kind: Deployment
metadata:
name: busybox
annotations:
new-key-from-patch2: new-value
`)
m, err := th.MakeKustTarget().MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
th.AssertActualEqualsExpected(m, `
apiVersion: apps/v1beta2
kind: Deployment
metadata:
labels:
app: nginx
name: nginx
spec:
template:
metadata:
labels:
app: nginx
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /tmp/ps
name: nginx-persistent-storage
volumes:
- emptyDir: {}
name: nginx-persistent-storage
- configMap:
name: configmap-in-base
name: configmap-in-base
---
apiVersion: apps/v1beta2
kind: Deployment
metadata:
annotations:
new-key-from-patch1: new-value
new-key-from-patch2: new-value
labels:
app: busybox
name: busybox
spec:
template:
metadata:
labels:
app: busybox
spec:
containers:
- image: busybox
name: busybox
volumeMounts:
- mountPath: /tmp/ps
name: busybox-persistent-storage
volumes:
- emptyDir: {}
name: busybox-persistent-storage
- configMap:
name: configmap-in-base
name: configmap-in-base
---
apiVersion: v1
kind: Service
metadata:
labels:
app: nginx
name: nginx
spec:
ports:
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: Service
metadata:
annotations:
new-key-from-patch1: new-value
labels:
app: busybox
name: busybox
spec:
ports:
- port: 8080
selector:
app: busybox
`)
}
9 changes: 5 additions & 4 deletions plugin/builtin/PatchTransformer.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions plugin/builtin/patchtransformer/PatchTransformer.go
Original file line number Diff line number Diff line change
Expand Up @@ -115,10 +115,11 @@ func (p *plugin) Transform(m resmap.ResMap) error {
}
}
if p.loadedPatch != nil {
p.loadedPatch.SetName(resource.GetName())
p.loadedPatch.SetNamespace(resource.GetNamespace())
p.loadedPatch.SetGvk(resource.GetGvk())
err = resource.Patch(p.loadedPatch.Kunstructured)
patchCopy := p.loadedPatch.DeepCopy()
patchCopy.SetName(resource.GetName())
patchCopy.SetNamespace(resource.GetNamespace())
patchCopy.SetGvk(resource.GetGvk())
err = resource.Patch(patchCopy.Kunstructured)
if err != nil {
return err
}
Expand Down

0 comments on commit ed0cfc6

Please sign in to comment.