Merge pull request #647 from monopole/yaTest

Yet another kusttarget test.
This commit is contained in:
Jeff Regan
2018-12-18 17:09:45 -08:00
committed by GitHub
2 changed files with 194 additions and 5 deletions

View File

@@ -37,7 +37,7 @@ import (
// To eventually fix this, we could write the data to a real filesystem, and
// clean up after, or use some other trick compatible with exec.
func writeBase(t *testing.T, ldr loadertest.FakeLoader) {
func writeMediumBase(t *testing.T, ldr loadertest.FakeLoader) {
writeK(t, ldr, "/app/base", `
namePrefix: baseprefix-
commonLabels:
@@ -86,9 +86,9 @@ spec:
`)
}
func TestBigBase(t *testing.T) {
func TestMediumBase(t *testing.T) {
ldr := loadertest.NewFakeLoader("/app/base")
writeBase(t, ldr)
writeMediumBase(t, ldr)
m, err := makeKustTarget(t, ldr).MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
@@ -149,9 +149,9 @@ spec:
`)
}
func TestBigOverlay(t *testing.T) {
func TestMediumOverlay(t *testing.T) {
ldr := loadertest.NewFakeLoader("/app/overlay")
writeBase(t, ldr)
writeMediumBase(t, ldr)
writeK(t, ldr, "/app/overlay", `
namePrefix: test-infra-
commonLabels:

View File

@@ -0,0 +1,189 @@
/*
Copyright 2018 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package target
import (
"testing"
"sigs.k8s.io/kustomize/pkg/internal/loadertest"
)
func writeSmallBase(t *testing.T, ldr loadertest.FakeLoader) {
writeK(t, ldr, "/app/base", `
namePrefix: a-
commonLabels:
app: myApp
resources:
- deployment.yaml
- service.yaml
`)
writeF(t, ldr, "/app/base/service.yaml", `
apiVersion: v1
kind: Service
metadata:
name: myService
spec:
selector:
backend: bungie
ports:
- port: 7002
`)
writeF(t, ldr, "/app/base/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment
metadata:
name: myDeployment
spec:
template:
metadata:
labels:
backend: awesome
spec:
containers:
- name: whatever
image: whatever
`)
}
func TestSmallBase(t *testing.T) {
ldr := loadertest.NewFakeLoader("/app/base")
writeSmallBase(t, ldr)
m, err := makeKustTarget(t, ldr).MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
if m == nil {
t.Fatalf("Empty map.")
}
s, err := m.EncodeAsYaml()
if err != nil {
t.Fatalf("Err: %v", err)
}
assertExpectedEqualsActual(t, s, `apiVersion: v1
kind: Service
metadata:
labels:
app: myApp
name: a-myService
spec:
ports:
- port: 7002
selector:
app: myApp
backend: bungie
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myApp
name: a-myDeployment
spec:
selector:
matchLabels:
app: myApp
template:
metadata:
labels:
app: myApp
backend: awesome
spec:
containers:
- image: whatever
name: whatever
`)
}
func TestSmallOverlay(t *testing.T) {
ldr := loadertest.NewFakeLoader("/app/overlay")
writeSmallBase(t, ldr)
writeK(t, ldr, "/app/overlay", `
namePrefix: b-
commonLabels:
env: prod
bases:
- ../base
patchesStrategicMerge:
- deployment/deployment.yaml
imageTags:
- name: whatever
newTag: 1.8.0`)
writeF(t, ldr, "/app/overlay/configmap/app.env", `
DB_USERNAME=admin
DB_PASSWORD=somepw
`)
writeF(t, ldr, "/app/overlay/configmap/app-init.ini", `
FOO=bar
BAR=baz
`)
writeF(t, ldr, "/app/overlay/deployment/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment
metadata:
name: myDeployment
spec:
replicas: 1000
`)
m, err := makeKustTarget(t, ldr).MakeCustomizedResMap()
if err != nil {
t.Fatalf("Err: %v", err)
}
s, err := m.EncodeAsYaml()
if err != nil {
t.Fatalf("Unexpected err: %v", err)
}
assertExpectedEqualsActual(t, s, `apiVersion: v1
kind: Service
metadata:
labels:
app: myApp
env: prod
name: b-a-myService
spec:
ports:
- port: 7002
selector:
app: myApp
backend: bungie
env: prod
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: myApp
env: prod
name: b-a-myDeployment
spec:
replicas: 1000
selector:
matchLabels:
app: myApp
env: prod
template:
metadata:
labels:
app: myApp
backend: awesome
env: prod
spec:
containers:
- image: whatever:1.8.0
name: whatever
`)
}