mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-18 02:55:22 +00:00
264 lines
4.4 KiB
Go
264 lines
4.4 KiB
Go
package krusty_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
|
|
)
|
|
|
|
// end to end tests to demonstrate functionality of ReplacementTransformer
|
|
func TestReplacementsField(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t)
|
|
defer th.Reset()
|
|
|
|
th.WriteK(".", `
|
|
resources:
|
|
- resource.yaml
|
|
|
|
replacements:
|
|
- source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.image
|
|
`)
|
|
th.WriteF("resource.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: postgres:1.8.0
|
|
name: postgresdb
|
|
`)
|
|
expected := `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: foobar:1
|
|
name: postgresdb
|
|
`
|
|
m := th.Run(".", th.MakeDefaultOptions())
|
|
th.AssertActualEqualsExpected(m, expected)
|
|
}
|
|
|
|
func TestReplacementsFieldWithPath(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t)
|
|
defer th.Reset()
|
|
|
|
th.WriteK(".", `
|
|
resources:
|
|
- resource.yaml
|
|
|
|
replacements:
|
|
- path: replacement.yaml
|
|
`)
|
|
th.WriteF("replacement.yaml", `
|
|
source:
|
|
kind: Deployment
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
kind: Deployment
|
|
fieldPaths:
|
|
- spec.template.spec.containers.1.image
|
|
`)
|
|
th.WriteF("resource.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: postgres:1.8.0
|
|
name: postgresdb
|
|
`)
|
|
expected := `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: foobar:1
|
|
name: replaced-with-digest
|
|
- image: foobar:1
|
|
name: postgresdb
|
|
`
|
|
m := th.Run(".", th.MakeDefaultOptions())
|
|
th.AssertActualEqualsExpected(m, expected)
|
|
}
|
|
|
|
func TestReplacementTransformerWithDiamondShape(t *testing.T) {
|
|
th := kusttest_test.MakeEnhancedHarness(t)
|
|
defer th.Reset()
|
|
|
|
th.WriteF("base/deployments.yaml", `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:1.7.9
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: sourceA
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagA
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: sourceB
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagB
|
|
name: nginx
|
|
`)
|
|
th.WriteK("base", `
|
|
resources:
|
|
- deployments.yaml
|
|
`)
|
|
th.WriteK("a", `
|
|
namePrefix: a-
|
|
resources:
|
|
- ../base
|
|
replacements:
|
|
- path: replacement.yaml
|
|
`)
|
|
th.WriteF("a/replacement.yaml", `
|
|
source:
|
|
name: a-sourceA
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
name: a-deploy
|
|
fieldPaths:
|
|
- spec.template.spec.containers.[name=nginx].image
|
|
`)
|
|
th.WriteK("b", `
|
|
namePrefix: b-
|
|
resources:
|
|
- ../base
|
|
replacements:
|
|
- path: replacement.yaml
|
|
`)
|
|
th.WriteF("b/replacement.yaml", `
|
|
source:
|
|
name: b-sourceB
|
|
fieldPath: spec.template.spec.containers.0.image
|
|
targets:
|
|
- select:
|
|
name: b-deploy
|
|
fieldPaths:
|
|
- spec.template.spec.containers.[name=nginx].image
|
|
`)
|
|
th.WriteK(".", `
|
|
resources:
|
|
- a
|
|
- b
|
|
`)
|
|
|
|
m := th.Run(".", th.MakeDefaultOptions())
|
|
th.AssertActualEqualsExpected(m, `
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: a-deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagA
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: a-sourceA
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagA
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: a-sourceB
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagB
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: b-deploy
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagB
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: b-sourceA
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagA
|
|
name: nginx
|
|
---
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: b-sourceB
|
|
spec:
|
|
template:
|
|
spec:
|
|
containers:
|
|
- image: nginx:newtagB
|
|
name: nginx
|
|
`)
|
|
}
|