Merge pull request #1879 from monopole/consolidateTestHarness

Consolidate test harness to one package.
This commit is contained in:
Jeff Regan
2019-12-02 12:48:15 -08:00
committed by GitHub
64 changed files with 676 additions and 710 deletions

View File

@@ -23,16 +23,16 @@ type FakeLoader struct {
// The initialDir argument should be an absolute file path.
func NewFakeLoader(initialDir string) FakeLoader {
return NewFakeLoaderWithRestrictor(
loader.RestrictionRootOnly, initialDir)
loader.RestrictionRootOnly, filesys.MakeFsInMemory(), initialDir)
}
// NewFakeLoaderWithRestrictor returns a Loader that
// uses a fake filesystem.
// The initialDir argument should be an absolute file path.
func NewFakeLoaderWithRestrictor(
lr loader.LoadRestrictorFunc, initialDir string) FakeLoader {
// Create fake filesystem and inject it into initial Loader.
fSys := filesys.MakeFsInMemory()
lr loader.LoadRestrictorFunc,
fSys filesys.FileSystem,
initialDir string) FakeLoader {
fSys.Mkdir(initialDir)
ldr, err := loader.NewLoader(lr, initialDir, fSys)
if err != nil {

View File

@@ -7,7 +7,9 @@ import (
"encoding/base64"
"testing"
"sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/ifc"
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
@@ -17,7 +19,8 @@ import (
// high level tests.
func TestMakeCustomizedResMap(t *testing.T) {
th := kusttest_test.NewKustTestHarness(t, "/whatever")
fSys := filesys.MakeFsInMemory()
th := kusttest_test.MakeHarnessWithFs(t, fSys)
th.WriteK("/whatever", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -68,8 +71,10 @@ metadata:
{"op": "add", "path": "/spec/replica", "value": "3"}
]`)
resFactory := resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl())
resources := []*resource.Resource{
th.RF().FromMapWithName("dply1", map[string]interface{}{
resFactory.FromMapWithName("dply1", map[string]interface{}{
"apiVersion": "apps/v1",
"kind": "Deployment",
"metadata": map[string]interface{}{
@@ -101,7 +106,7 @@ metadata:
},
},
}),
th.RF().FromMapWithName("ns1", map[string]interface{}{
resFactory.FromMapWithName("ns1", map[string]interface{}{
"apiVersion": "v1",
"kind": "Namespace",
"metadata": map[string]interface{}{
@@ -114,7 +119,7 @@ metadata:
},
},
}),
th.RF().FromMapWithName("literalConfigMap",
resFactory.FromMapWithName("literalConfigMap",
map[string]interface{}{
"apiVersion": "v1",
"kind": "ConfigMap",
@@ -133,7 +138,7 @@ metadata:
"DB_PASSWORD": "somepw",
},
}),
th.RF().FromMapWithName("secret",
resFactory.FromMapWithName("secret",
map[string]interface{}{
"apiVersion": "v1",
"kind": "Secret",
@@ -162,7 +167,8 @@ metadata:
}
}
actual, err := th.MakeKustTarget().MakeCustomizedResMap()
actual, err := makeKustTargetWithRf(
t, fSys, "/whatever", resFactory).MakeCustomizedResMap()
if err != nil {
t.Fatalf("unexpected Resources error %v", err)
}

View File

@@ -0,0 +1,48 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package target_test
import (
"testing"
"sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/internal/k8sdeps/transformer"
"sigs.k8s.io/kustomize/api/internal/loadertest"
pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader"
"sigs.k8s.io/kustomize/api/internal/target"
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/loader"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
)
func makeKustTarget(
t *testing.T,
fSys filesys.FileSystem, path string) *target.KustTarget {
return makeKustTargetWithRf(
t, fSys, path,
resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()))
}
func makeKustTargetWithRf(
t *testing.T,
fSys filesys.FileSystem, path string,
resFact *resource.Factory) *target.KustTarget {
rf := resmap.NewFactory(resFact, transformer.NewFactoryImpl())
pc := konfig.DisabledPluginConfig()
kt := target.NewKustTarget(
loadertest.NewFakeLoaderWithRestrictor(
loader.RestrictionRootOnly, fSys, path),
valtest_test.MakeFakeValidator(),
rf,
transformer.NewFactoryImpl(),
pLdr.NewLoader(pc, rf))
err := kt.Load()
if err != nil {
t.Fatalf("Unexpected construction error %v", err)
}
return kt
}

View File

@@ -48,7 +48,7 @@ var someVars = []types.Var{
}
func TestGetAllVarsSimple(t *testing.T) {
th := kusttest_test.NewKustTestHarness(t, "/app")
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
vars:
- name: AWARD
@@ -64,7 +64,8 @@ vars:
name: heron
apiVersion: v300
`)
ra, err := th.MakeKustTarget().AccumulateTarget()
ra, err := makeKustTarget(
t, th.GetFSys(), "/app").AccumulateTarget()
if err != nil {
t.Fatalf("Err: %v", err)
}
@@ -83,7 +84,7 @@ vars:
}
func TestGetAllVarsNested(t *testing.T) {
th := kusttest_test.NewKustTestHarness(t, "/app/overlays/o2")
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
vars:
- name: AWARD
@@ -117,7 +118,9 @@ vars:
resources:
- ../o1
`)
ra, err := th.MakeKustTarget().AccumulateTarget()
ra, err := makeKustTarget(
t, th.GetFSys(), "/app/overlays/o2").AccumulateTarget()
if err != nil {
t.Fatalf("Err: %v", err)
}
@@ -139,7 +142,7 @@ resources:
}
func TestVarCollisionsForbidden(t *testing.T) {
th := kusttest_test.NewKustTestHarness(t, "/app/overlays/o2")
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
vars:
- name: AWARD
@@ -173,7 +176,8 @@ vars:
resources:
- ../o1
`)
_, err := th.MakeKustTarget().AccumulateTarget()
_, err := makeKustTarget(
t, th.GetFSys(), "/app/overlays/o2").AccumulateTarget()
if err == nil {
t.Fatalf("expected var collision")
}

View File

@@ -8,13 +8,13 @@ import (
"strings"
"testing"
"sigs.k8s.io/kustomize/api/konfig"
. "sigs.k8s.io/kustomize/api/internal/target"
"sigs.k8s.io/kustomize/api/konfig"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestTargetMustHaveKustomizationFile(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteF("/app/service.yaml", `
apiVersion: v1
kind: Service
@@ -37,7 +37,7 @@ metadata:
}
func TestTargetMustHaveOnlyOneKustomizationFile(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
for _, n := range konfig.RecognizedKustomizationFileNames() {
th.WriteF(filepath.Join("/app", n), `
apiVersion: kustomize.config.k8s.io/v1beta1
@@ -54,7 +54,7 @@ kind: Kustomization
}
func TestBaseMustHaveKustomizationFile(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- base
@@ -80,7 +80,7 @@ spec:
}
func TestResourceNotFound(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- deployment.yaml

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func writeMediumBase(th testingHarness) {
func writeMediumBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
namePrefix: baseprefix-
commonLabels:
@@ -57,7 +59,7 @@ spec:
}
func TestMediumBase(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeMediumBase(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -111,7 +113,7 @@ spec:
}
func TestMediumOverlay(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeMediumBase(th)
th.WriteK("/app/overlay", `
namePrefix: test-infra-

View File

@@ -8,11 +8,12 @@ import (
"testing"
. "sigs.k8s.io/kustomize/api/krusty"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
"sigs.k8s.io/kustomize/api/types"
)
func TestOrderPreserved(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
namePrefix: b-
resources:
@@ -99,7 +100,7 @@ metadata:
}
func TestBaseInResourceList(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/prod", `
namePrefix: b-
resources:
@@ -131,7 +132,7 @@ spec:
`)
}
func writeSmallBase(th testingHarness) {
func writeSmallBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
namePrefix: a-
commonLabels:
@@ -169,7 +170,7 @@ spec:
}
func TestSmallBase(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeSmallBase(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -209,7 +210,7 @@ spec:
}
func TestSmallOverlay(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeSmallBase(th)
th.WriteK("/app/overlay", `
namePrefix: b-
@@ -284,7 +285,7 @@ spec:
}
func TestSharedPatchDisAllowed(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeSmallBase(th)
th.WriteK("/app/overlay", `
commonLabels:
@@ -315,7 +316,7 @@ spec:
}
func TestSharedPatchAllowed(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeSmallBase(th)
th.WriteK("/app/overlay", `
commonLabels:
@@ -381,7 +382,7 @@ spec:
}
func TestSmallOverlayJSONPatch(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeSmallBase(th)
th.WriteK("/app/overlay", `
resources:

View File

@@ -5,6 +5,8 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
// Here is a structure of a kustomization of two components, component1
@@ -38,7 +40,7 @@ import (
// ├── kustomization.yaml
func TestBaseReuseNameConflict(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/component1/base", `
resources:
- ../../shared

View File

@@ -11,7 +11,7 @@ import (
"regexp"
"testing"
"sigs.k8s.io/kustomize/api/testutils/kusttest"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
// This is an example of using a helm chart as a base,
@@ -34,7 +34,7 @@ func TestChartInflatorPlugin(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "ChartInflator")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
generators:
- chartInflator.yaml

View File

@@ -8,6 +8,7 @@ import (
"testing"
. "sigs.k8s.io/kustomize/api/krusty"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
"sigs.k8s.io/kustomize/api/types"
)
@@ -25,7 +26,7 @@ spec:
app: my-app
`
func writeStatefulSetBase(th testingHarness) {
func writeStatefulSetBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- statefulset.yaml
@@ -54,7 +55,7 @@ spec:
`)
}
func writeHTTPSOverlay(th testingHarness) {
func writeHTTPSOverlay(th kusttest_test.Harness) {
th.WriteK("/app/https", `
resources:
- ../base
@@ -73,7 +74,7 @@ spec:
`)
}
func writeHTTPSTransformerRaw(th testingHarness) {
func writeHTTPSTransformerRaw(th kusttest_test.Harness) {
th.WriteF("/app/https/service/https-svc.yaml", httpsService)
th.WriteF("/app/https/transformer/transformer.yaml", `
apiVersion: builtin
@@ -95,7 +96,7 @@ patch: |-
`)
}
func writeHTTPSTransformerBase(th testingHarness) {
func writeHTTPSTransformerBase(th kusttest_test.Harness) {
th.WriteK("/app/https/service", `
resources:
- https-svc.yaml
@@ -107,7 +108,7 @@ resources:
writeHTTPSTransformerRaw(th)
}
func writeConfigFromEnvOverlay(th testingHarness) {
func writeConfigFromEnvOverlay(th kusttest_test.Harness) {
th.WriteK("/app/config", `
resources:
- ../base
@@ -136,7 +137,7 @@ spec:
`)
}
func writeConfigFromEnvTransformerRaw(th testingHarness) {
func writeConfigFromEnvTransformerRaw(th kusttest_test.Harness) {
th.WriteF("/app/config/map/generator.yaml", `
apiVersion: builtin
kind: ConfigMapGenerator
@@ -171,7 +172,7 @@ patch: |-
name: my-config
`)
}
func writeConfigFromEnvTransformerBase(th testingHarness) {
func writeConfigFromEnvTransformerBase(th kusttest_test.Harness) {
th.WriteK("/app/config/map", `
resources:
- generator.yaml
@@ -183,7 +184,7 @@ resources:
writeConfigFromEnvTransformerRaw(th)
}
func writeTolerationsOverlay(th testingHarness) {
func writeTolerationsOverlay(th kusttest_test.Harness) {
th.WriteK("/app/tolerations", `
resources:
- ../base
@@ -205,7 +206,7 @@ spec:
`)
}
func writeTolerationsTransformerRaw(th testingHarness) {
func writeTolerationsTransformerRaw(th kusttest_test.Harness) {
th.WriteF("/app/tolerations/transformer.yaml", `
apiVersion: builtin
kind: PatchTransformer
@@ -231,7 +232,7 @@ patch: |-
`)
}
func writeTolerationsTransformerBase(th testingHarness) {
func writeTolerationsTransformerBase(th kusttest_test.Harness) {
th.WriteK("/app/tolerations", `
resources:
- transformer.yaml
@@ -239,7 +240,7 @@ resources:
writeTolerationsTransformerRaw(th)
}
func writeStorageOverlay(th testingHarness) {
func writeStorageOverlay(th kusttest_test.Harness) {
th.WriteK("/app/storage", `
resources:
- ../base
@@ -256,7 +257,7 @@ patchesJson6902:
`)
}
func writeStorageTransformerRaw(th testingHarness) {
func writeStorageTransformerRaw(th kusttest_test.Harness) {
th.WriteF("/app/storage/transformer.yaml", `
apiVersion: builtin
kind: PatchTransformer
@@ -272,7 +273,7 @@ patch: |-
`)
}
func writeStorageTransformerBase(th testingHarness) {
func writeStorageTransformerBase(th kusttest_test.Harness) {
th.WriteK("/app/storage", `
resources:
- transformer.yaml
@@ -280,14 +281,14 @@ resources:
writeStorageTransformerRaw(th)
}
func writePatchingOverlays(th testingHarness) {
func writePatchingOverlays(th kusttest_test.Harness) {
writeStorageOverlay(th)
writeConfigFromEnvOverlay(th)
writeTolerationsOverlay(th)
writeHTTPSOverlay(th)
}
func writePatchingTransformersRaw(th testingHarness) {
func writePatchingTransformersRaw(th kusttest_test.Harness) {
writeStorageTransformerRaw(th)
writeConfigFromEnvTransformerRaw(th)
writeTolerationsTransformerRaw(th)
@@ -310,7 +311,7 @@ func writePatchingTransformersRaw(th testingHarness) {
// must be self-contained, i.e. the config may not have fields that
// refer to local files, since those files won't be present when
// the plugin is instantiated and used.
func writePatchingTransformerBases(th testingHarness) {
func writePatchingTransformerBases(th kusttest_test.Harness) {
writeStorageTransformerBase(th)
writeConfigFromEnvTransformerBase(th)
writeTolerationsTransformerBase(th)
@@ -353,7 +354,7 @@ func writePatchingTransformerBases(th testingHarness) {
// - prod: Combines the config, tolerations and https intermediate overlays.
func TestComplexComposition_Dev_Failure(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeStatefulSetBase(th)
writePatchingOverlays(th)
th.WriteK("/app/dev", `
@@ -405,7 +406,7 @@ metadata:
`
func TestComplexComposition_Dev_SuccessWithRawTransformers(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeStatefulSetBase(th)
writePatchingTransformersRaw(th)
th.WriteK("/app/dev", `
@@ -426,7 +427,7 @@ transformers:
}
func TestComplexComposition_Dev_SuccessWithBaseTransformers(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeStatefulSetBase(th)
writePatchingTransformerBases(th)
th.WriteK("/app/dev", `
@@ -443,7 +444,7 @@ transformers:
}
func TestComplexComposition_Prod_Failure(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeStatefulSetBase(th)
writePatchingOverlays(th)
th.WriteK("/app/prod", `
@@ -512,7 +513,7 @@ metadata:
`
func TestComplexComposition_Prod_SuccessWithRawTransformers(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeStatefulSetBase(th)
writePatchingTransformersRaw(th)
th.WriteK("/app/prod", `
@@ -535,7 +536,7 @@ transformers:
}
func TestComplexComposition_Prod_SuccessWithBaseTransformers(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeStatefulSetBase(th)
writePatchingTransformerBases(th)
th.WriteK("/app/prod", `

View File

@@ -5,12 +5,14 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
// Generate a Secret and a ConfigMap from the same data
// to compare the result.
func TestGeneratorBasics(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
namePrefix: blah-
configMapGenerator:
@@ -107,7 +109,7 @@ type: Opaque
// TODO: These should be errors instead.
func TestGeneratorRepeatsInKustomization(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
namePrefix: blah-
configMapGenerator:
@@ -159,7 +161,7 @@ metadata:
}
func TestGeneratorOverlays(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base1", `
namePrefix: p1-
configMapGenerator:
@@ -231,7 +233,7 @@ metadata:
func TestConfigMapGeneratorMergeNamePrefix(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
configMapGenerator:
- name: cm

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func writeBaseWithCrd(th testingHarness) {
func writeBaseWithCrd(th kusttest_test.Harness) {
th.WriteK("/app/base", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -223,7 +225,7 @@ data:
}
func TestCrdBase(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeBaseWithCrd(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -254,7 +256,7 @@ spec:
}
func TestCrdWithOverlay(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeBaseWithCrd(th)
th.WriteK("/app/overlay", `
apiVersion: kustomize.config.k8s.io/v1beta1
@@ -303,7 +305,7 @@ spec:
}
func TestCrdWithContainers(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/crd/containers", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func makeBaseReferencingCustomConfig(th testingHarness) {
func makeBaseReferencingCustomConfig(th kusttest_test.Harness) {
th.WriteK("/app/base", `
namePrefix: x-
commonLabels:
@@ -72,7 +74,7 @@ spec:
}
func TestCustomConfig(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeBaseReferencingCustomConfig(th)
th.WriteLegacyConfigs("/app/base/config/defaults.yaml")
th.WriteF("/app/base/config/custom.yaml", `
@@ -135,7 +137,7 @@ spec:
}
func TestCustomConfigWithDefaultOverspecification(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeBaseReferencingCustomConfig(th)
th.WriteLegacyConfigs("/app/base/config/defaults.yaml")
// Specifying namePrefix here conflicts with (is the same as)
@@ -203,7 +205,7 @@ spec:
}
func TestFixedBug605_BaseCustomizationAvailableInOverlay(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeBaseReferencingCustomConfig(th)
th.WriteLegacyConfigs("/app/base/config/defaults.yaml")
th.WriteF("/app/base/config/custom.yaml", `

View File

@@ -19,7 +19,7 @@ func TestCustomNamePrefixer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PrefixSuffixTransformer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- deployment.yaml

View File

@@ -24,7 +24,7 @@ func TestReusableCustomTransformers(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "LabelTransformer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
// First write three custom configurations for builtin plugins.

View File

@@ -58,7 +58,7 @@ spec:
`
const patchJsonRestartPolicy = `[{"op": "add", "path": "/spec/template/spec/restartPolicy", "value": "Always"}]`
func writeDeploymentBase(th testingHarness) {
func writeDeploymentBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- deployment.yaml
@@ -79,7 +79,7 @@ spec:
`)
}
func writeProbeOverlay(th testingHarness) {
func writeProbeOverlay(th kusttest_test.Harness) {
th.WriteK("/app/probe", `
resources:
- ../base
@@ -89,7 +89,7 @@ patchesStrategicMerge:
th.WriteF("/app/probe/dep-patch.yaml", patchAddProbe)
}
func writeDNSOverlay(th testingHarness) {
func writeDNSOverlay(th kusttest_test.Harness) {
th.WriteK("/app/dns", `
resources:
- ../base
@@ -99,7 +99,7 @@ patchesStrategicMerge:
th.WriteF("/app/dns/dep-patch.yaml", patchDnsPolicy)
}
func writeRestartOverlay(th testingHarness) {
func writeRestartOverlay(th kusttest_test.Harness) {
th.WriteK("/app/restart", `
resources:
- ../base
@@ -123,7 +123,7 @@ patchesStrategicMerge:
// base
//
func TestIssue1251_CompositeDiamond_Failure(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeDeploymentBase(th)
writeProbeOverlay(th)
writeDNSOverlay(th)
@@ -168,7 +168,7 @@ spec:
// This test reuses some methods from TestIssue1251_CompositeDiamond,
// but overwrites the kustomization files in the overlays.
func TestIssue1251_Patches_Overlayed(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeDeploymentBase(th)
// probe overlays base.
@@ -197,7 +197,7 @@ patchesStrategicMerge:
}
func TestIssue1251_Patches_Local(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeDeploymentBase(th)
th.WriteK("/app/composite", `
@@ -216,7 +216,7 @@ patchesStrategicMerge:
th.AssertActualEqualsExpected(m, expectedPatchedDeployment)
}
func definePatchDirStructure(th testingHarness) {
func definePatchDirStructure(th kusttest_test.Harness) {
writeDeploymentBase(th)
th.WriteF("/app/patches/patchRestartPolicy.yaml", patchRestartPolicy)
@@ -226,7 +226,7 @@ func definePatchDirStructure(th testingHarness) {
// Fails due to file load restrictor.
func TestIssue1251_Patches_ProdVsDev_Failure(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
definePatchDirStructure(th)
th.WriteK("/app/prod", `
@@ -299,7 +299,7 @@ spec:
// the kustomization root), opening the user to whatever
// threat the load restrictor was meant to address.
func TestIssue1251_Patches_ProdVsDev(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
definePatchDirStructure(th)
th.WriteK("/app/prod", `
@@ -315,7 +315,7 @@ patchesStrategicMerge:
m := th.Run("/app/prod", opts)
th.AssertActualEqualsExpected(m, prodDevMergeResult1)
th = makeTestHarness(t)
th = kusttest_test.MakeHarness(t)
definePatchDirStructure(th)
th.WriteK("/app/dev", `
@@ -337,7 +337,7 @@ func TestIssue1251_Plugins_ProdVsDev(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
defineTransformerDirStructure(th)
th.WriteK("/app/prod", `
resources:
@@ -370,7 +370,7 @@ func TestIssue1251_Plugins_Local(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeDeploymentBase(th)
writeJsonTransformerPluginConfig(
@@ -393,7 +393,7 @@ transformers:
}
func writeJsonTransformerPluginConfig(
th testingHarness, path, name, patch string) {
th kusttest_test.Harness, path, name, patch string) {
th.WriteF(filepath.Join(path, name+"Config.yaml"),
fmt.Sprintf(`
apiVersion: builtin
@@ -417,7 +417,7 @@ func TestIssue1251_Plugins_Bundled(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeDeploymentBase(th)
th.WriteK("/app/patches", `
@@ -443,7 +443,7 @@ transformers:
th.AssertActualEqualsExpected(m, expectedPatchedDeployment)
}
func defineTransformerDirStructure(th testingHarness) {
func defineTransformerDirStructure(th kusttest_test.Harness) {
writeDeploymentBase(th)
th.WriteK("/app/patches/addDnsPolicy", `

View File

@@ -5,6 +5,8 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
// Here's a structure of two kustomizations,
@@ -28,7 +30,7 @@ import (
// \ | /
// base
//
func writeDiamondBase(th testingHarness) {
func writeDiamondBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- deploy.yaml
@@ -43,7 +45,7 @@ spec:
`)
}
func writeKirk(th testingHarness) {
func writeKirk(th kusttest_test.Harness) {
th.WriteK("/app/kirk", `
namePrefix: kirk-
resources:
@@ -70,7 +72,7 @@ data:
`)
}
func writeSpock(th testingHarness) {
func writeSpock(th kusttest_test.Harness) {
th.WriteK("/app/spock", `
namePrefix: spock-
resources:
@@ -88,7 +90,7 @@ spec:
`)
}
func writeBones(th testingHarness) {
func writeBones(th kusttest_test.Harness) {
th.WriteK("/app/bones", `
namePrefix: bones-
resources:
@@ -106,7 +108,7 @@ spec:
`)
}
func writeTenants(th testingHarness) {
func writeTenants(th kusttest_test.Harness) {
th.WriteK("/app/tenants", `
namePrefix: t-
resources:
@@ -137,7 +139,7 @@ data:
}
func TestBasicDiamond(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeDiamondBase(th)
writeKirk(th)
writeSpock(th)

View File

@@ -5,10 +5,12 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestIssue596AllowDirectoriesThatAreSubstringsOfEachOther(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", "")
th.WriteK("/app/overlays/aws", `
resources:

View File

@@ -9,6 +9,7 @@ import (
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func findSecret(m resmap.ResMap) *resource.Resource {
@@ -21,7 +22,7 @@ func findSecret(m resmap.ResMap) *resource.Resource {
}
func TestDisableNameSuffixHash(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
const kustomizationContent = `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func makeCommonFileForExtendedPatchTest(th testingHarness) {
func makeCommonFileForExtendedPatchTest(th kusttest_test.Harness) {
th.WriteF("/app/base/deployment.yaml", `
apiVersion: apps/v1beta2
kind: Deployment
@@ -87,7 +89,7 @@ spec:
}
func TestExtendedPatchNameSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -189,7 +191,7 @@ spec:
}
func TestExtendedPatchGvkSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -291,7 +293,7 @@ spec:
}
func TestExtendedPatchLabelSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -393,7 +395,7 @@ spec:
}
func TestExtendedPatchNameGvkSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -494,7 +496,7 @@ spec:
}
func TestExtendedPatchNameLabelSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -597,7 +599,7 @@ spec:
}
func TestExtendedPatchGvkLabelSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -698,7 +700,7 @@ spec:
}
func TestExtendedPatchNameGvkLabelSelector(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -800,7 +802,7 @@ spec:
}
func TestExtendedPatchNoMatch(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -898,7 +900,7 @@ spec:
}
func TestExtendedPatchWithoutTarget(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -996,7 +998,7 @@ spec:
}
func TestExtendedPatchNoMatchMultiplePatch(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -1098,7 +1100,7 @@ spec:
}
func TestExtendedPatchMultiplePatchOverlapping(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForExtendedPatchTest(th)
th.WriteK("/app/base", `
resources:

View File

@@ -6,10 +6,12 @@ package krusty_test
import (
"strings"
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestSimpleBase(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -146,7 +148,7 @@ spec:
`)
}
func makeBaseWithGenerators(th testingHarness) {
func makeBaseWithGenerators(th kusttest_test.Harness) {
th.WriteK("/app", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -212,7 +214,7 @@ spec:
}
func TestBaseWithGeneratorsAlone(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeBaseWithGenerators(th)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -303,7 +305,7 @@ type: Opaque
}
func TestMergeAndReplaceGenerators(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeBaseWithGenerators(th)
th.WriteF("/overlay/deployment.yaml", `
apiVersion: apps/v1beta2
@@ -458,7 +460,7 @@ metadata:
}
func TestGeneratingIntoNamespaces(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
configMapGenerator:
- name: test
@@ -524,7 +526,7 @@ type: Opaque
// Valid that conflict is detected is the name are identical
// and namespace left to default
func TestConfigMapGeneratingIntoSameNamespace(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
configMapGenerator:
- name: test
@@ -547,7 +549,7 @@ configMapGenerator:
// Valid that conflict is detected is the name are identical
// and namespace left to default
func TestSecretGeneratingIntoSameNamespace(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
secretGenerator:
- name: test

View File

@@ -5,10 +5,12 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestSecretGenerator(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
secretGenerator:
- name: bob
@@ -44,7 +46,7 @@ type: Opaque
}
func TestGeneratorOptionsWithBases(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func makeResourcesForPatchTest(th testingHarness) {
func makeResourcesForPatchTest(th kusttest_test.Harness) {
th.WriteF("/app/base/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment
@@ -37,7 +39,7 @@ spec:
}
func TestStrategicMergePatchInline(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeResourcesForPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -86,7 +88,7 @@ spec:
}
func TestJSONPatchInline(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeResourcesForPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -133,7 +135,7 @@ spec:
}
func TestExtendedPatchInlineJSON(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeResourcesForPatchTest(th)
th.WriteK("/app/base", `
resources:
@@ -178,7 +180,7 @@ spec:
}
func TestExtendedPatchInlineYAML(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeResourcesForPatchTest(th)
th.WriteK("/app/base", `
resources:

View File

@@ -6,9 +6,11 @@ package krusty_test
import (
"strings"
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func makeCommonFileForMultiplePatchTest(th testingHarness) {
func makeCommonFileForMultiplePatchTest(th kusttest_test.Harness) {
th.WriteK("/app/base", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -87,7 +89,7 @@ configMapGenerator:
}
func TestMultiplePatchesNoConflict(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForMultiplePatchTest(th)
th.WriteF("/app/overlay/staging/deployment-patch1.yaml", `
apiVersion: apps/v1beta2
@@ -228,7 +230,7 @@ metadata:
}
func TestMultiplePatchesWithConflict(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForMultiplePatchTest(th)
th.WriteF("/app/overlay/staging/deployment-patch1.yaml", `
apiVersion: apps/v1beta2
@@ -320,7 +322,7 @@ spec:
}
for _, c := range cases {
t.Run(c.name, func(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForMultiplePatchTest(th)
th.WriteF("/app/overlay/staging/deployment-patch1.yaml", c.patch1)
@@ -418,7 +420,7 @@ metadata:
}
func TestMultiplePatchesBothWithPatchDeleteDirective(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeCommonFileForMultiplePatchTest(th)
th.WriteF("/app/overlay/staging/deployment-patch1.yaml", `
apiVersion: apps/v1beta2

View File

@@ -5,10 +5,12 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestNamespacedGenerator(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
@@ -71,7 +73,7 @@ type: Opaque
}
func TestNamespacedGeneratorWithOverlays(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
namespace: base

View File

@@ -6,10 +6,12 @@ package krusty_test
import (
"strings"
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestNamespacedSecrets(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteF("/app/secrets.yaml", `
apiVersion: v1
kind: Secret
@@ -93,7 +95,7 @@ rules:
// PrefixSuffixTransformer and namereference transformers are
// able to deal with simultaneous change of namespace and name.
func TestNameAndNsTransformation(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/nameandns", `
namePrefix: p1-
@@ -463,7 +465,7 @@ spec:
// using the same name in different namespaces are treated as ambiguous if the namespace is
// not specified
func TestVariablesAmbiguous(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/namespaceNeedInVar/myapp", namespaceNeedInVarMyApp)
th.WriteF("/namespaceNeedInVar/myapp/elasticsearch-dev-service.yaml", namespaceNeedInVarDevResources)
th.WriteF("/namespaceNeedInVar/myapp/elasticsearch-test-service.yaml", namespaceNeedInVarTestResources)
@@ -520,7 +522,7 @@ vars:
// to TestVariablesAmbiguous problem. It requires to separate the variables
// and resources into multiple kustomization context/folders instead of one.
func TestVariablesAmbiguousWorkaround(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/namespaceNeedInVar/dev", namespaceNeedInVarDevFolder)
th.WriteF("/namespaceNeedInVar/dev/elasticsearch-dev-service.yaml", namespaceNeedInVarDevResources)
th.WriteK("/namespaceNeedInVar/test", namespaceNeedInVarTestFolder)
@@ -576,7 +578,7 @@ vars:
// TestVariablesDisambiguatedWithNamespace demonstrates that adding the namespace
// to the variable declarations allows to disambiguate the variables.
func TestVariablesDisambiguatedWithNamespace(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/namespaceNeedInVar/myapp", namespaceNeedInVarMyAppWithNamespace)
th.WriteF("/namespaceNeedInVar/myapp/elasticsearch-dev-service.yaml", namespaceNeedInVarDevResources)
th.WriteF("/namespaceNeedInVar/myapp/elasticsearch-test-service.yaml", namespaceNeedInVarTestResources)

View File

@@ -5,10 +5,12 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestNullValues(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteF("/app/deployment.yaml", `
apiVersion: apps/v1
kind: Deployment

View File

@@ -25,17 +25,17 @@ func TestPluginEnvironment(t *testing.T) {
"someteam.example.com", "v1", "PrintPluginEnv")
confirmBehavior(
makeTestHarnessWithFs(t, filesys.MakeFsInMemory()),
kusttest_test.MakeHarnessWithFs(t, filesys.MakeFsInMemory()),
filesys.Separator)
dir := makeTmpDir(t)
defer os.RemoveAll(dir)
confirmBehavior(
makeTestHarnessWithFs(t, filesys.MakeFsOnDisk()),
kusttest_test.MakeHarnessWithFs(t, filesys.MakeFsOnDisk()),
dir)
}
func confirmBehavior(th testingHarness, dir string) {
func confirmBehavior(th kusttest_test.Harness, dir string) {
th.WriteK(dir, `
generators:
- config.yaml

View File

@@ -5,10 +5,12 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestPruneConfigMap(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
resources:
- deployment.yaml

View File

@@ -6,9 +6,11 @@ package krusty_test
import (
"strings"
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func writeBase(th testingHarness) {
func writeBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- serviceaccount.yaml
@@ -62,7 +64,7 @@ rules:
`)
}
func writeMidOverlays(th testingHarness) {
func writeMidOverlays(th kusttest_test.Harness) {
// Mid-level overlays
th.WriteK("/app/overlays/a", `
resources:
@@ -78,7 +80,7 @@ nameSuffix: -suffixB
`)
}
func writeTopOverlay(th testingHarness) {
func writeTopOverlay(th kusttest_test.Harness) {
// Top overlay, combining the mid-level overlays
th.WriteK("/app/combined", `
resources:
@@ -89,7 +91,7 @@ resources:
func TestBase(t *testing.T) {
//th := kusttest_test.NewKustTestHarness(t, "/app/base")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeBase(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -139,7 +141,7 @@ rules:
}
func TestMidLevelA(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeBase(th)
writeMidOverlays(th)
m := th.Run("/app/overlays/a", th.MakeDefaultOptions())
@@ -190,7 +192,7 @@ rules:
}
func TestMidLevelB(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeBase(th)
writeMidOverlays(th)
m := th.Run("/app/overlays/b", th.MakeDefaultOptions())
@@ -241,7 +243,7 @@ rules:
}
func TestMultibasesNoConflict(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
writeBase(th)
writeMidOverlays(th)
writeTopOverlay(th)
@@ -336,7 +338,7 @@ rules:
}
func TestMultibasesWithConflict(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
//th := kusttest_test.NewKustTestHarness(t, "/app/combined")
writeBase(th)
writeMidOverlays(th)

View File

@@ -1,202 +0,0 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package krusty_test
import (
"fmt"
"path/filepath"
"strings"
"testing"
"sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/konfig/builtinpluginconsts"
. "sigs.k8s.io/kustomize/api/krusty"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/types"
)
type testingHarness struct {
t *testing.T
fSys filesys.FileSystem
}
func makeTestHarness(t *testing.T) testingHarness {
return makeTestHarnessWithFs(t, filesys.MakeFsInMemory())
}
func makeTestHarnessWithFs(
t *testing.T, fSys filesys.FileSystem) testingHarness {
return testingHarness{
t: t,
fSys: fSys,
}
}
func (th testingHarness) GetT() *testing.T {
return th.t
}
func (th testingHarness) WriteK(path string, content string) {
th.fSys.WriteFile(
filepath.Join(
path,
konfig.DefaultKustomizationFileName()), []byte(`
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
`+content))
}
func (th testingHarness) WriteF(path string, content string) {
th.fSys.WriteFile(path, []byte(content))
}
func (th testingHarness) MakeDefaultOptions() Options {
return th.MakeOptionsPluginsDisabled()
}
// This has no impact on Builtin plugins, as they are always enabled.
func (th testingHarness) MakeOptionsPluginsDisabled() Options {
return Options{
LoadRestrictions: types.LoadRestrictionsRootOnly,
PluginConfig: konfig.DisabledPluginConfig(),
}
}
// Enables use of non-builtin plugins.
func (th testingHarness) MakeOptionsPluginsEnabled() Options {
c, err := konfig.EnabledPluginConfig()
if err != nil {
if strings.Contains(err.Error(), "unable to find plugin root") {
th.t.Log(
"Tests that want to run with plugins enabled must be " +
"bookended by calls to NewPluginTestEnv.Set(), Reset().")
}
th.t.Fatal(err)
}
return Options{
LoadRestrictions: types.LoadRestrictionsRootOnly,
PluginConfig: c,
}
}
// Run, failing on error.
func (th testingHarness) Run(path string, o Options) resmap.ResMap {
m, err := MakeKustomizer(th.fSys, &o).Run(path)
if err != nil {
th.t.Fatal(err)
}
return m
}
// Run, failing if there is no error.
func (th testingHarness) RunWithErr(path string, o Options) error {
_, err := MakeKustomizer(th.fSys, &o).Run(path)
if err == nil {
th.t.Fatalf("expected error")
}
return err
}
func (th testingHarness) AssertActualEqualsExpected(
m resmap.ResMap, expected string) {
th.AssertActualEqualsExpectedWithTweak(m, nil, expected)
}
func (th testingHarness) AssertActualEqualsExpectedWithTweak(
m resmap.ResMap, tweaker func([]byte) []byte, expected string) {
if m == nil {
th.t.Fatalf("Map should not be nil.")
}
// Ignore leading linefeed in expected value
// to ease readability of tests.
if len(expected) > 0 && expected[0] == 10 {
expected = expected[1:]
}
actual, err := m.AsYaml()
if err != nil {
th.t.Fatalf("Unexpected err: %v", err)
}
if tweaker != nil {
actual = tweaker(actual)
}
if string(actual) != expected {
th.reportDiffAndFail(actual, expected)
}
}
// Pretty printing of file differences.
func (th testingHarness) reportDiffAndFail(actual []byte, expected string) {
sE, maxLen := convertToArray(expected)
sA, _ := convertToArray(string(actual))
fmt.Println("===== ACTUAL BEGIN ========================================")
fmt.Print(string(actual))
fmt.Println("===== ACTUAL END ==========================================")
format := fmt.Sprintf("%%s %%-%ds %%s\n", maxLen+4)
limit := 0
if len(sE) < len(sA) {
limit = len(sE)
} else {
limit = len(sA)
}
fmt.Printf(format, " ", "EXPECTED", "ACTUAL")
fmt.Printf(format, " ", "--------", "------")
for i := 0; i < limit; i++ {
fmt.Printf(format, hint(sE[i], sA[i]), sE[i], sA[i])
}
if len(sE) < len(sA) {
for i := len(sE); i < len(sA); i++ {
fmt.Printf(format, "X", "", sA[i])
}
} else {
for i := len(sA); i < len(sE); i++ {
fmt.Printf(format, "X", sE[i], "")
}
}
th.t.Fatalf("Expected not equal to actual")
}
func convertToArray(x string) ([]string, int) {
a := strings.Split(strings.TrimSuffix(x, "\n"), "\n")
maxLen := 0
for i, v := range a {
z := tabToSpace(v)
if len(z) > maxLen {
maxLen = len(z)
}
a[i] = z
}
return a, maxLen
}
func hint(a, b string) string {
if a == b {
return " "
}
return "X"
}
func tabToSpace(input string) string {
var result []string
for _, i := range input {
if i == 9 {
result = append(result, " ")
} else {
result = append(result, string(i))
}
}
return strings.Join(result, "")
}
func (th testingHarness) WriteLegacyConfigs(fName string) {
m := builtinpluginconsts.GetDefaultFieldSpecsAsMap()
var content []byte
for _, tCfg := range m {
content = append(content, []byte(tCfg)...)
}
err := th.fSys.WriteFile(fName, content)
if err != nil {
th.t.Fatalf("unable to add file %s", fName)
}
}

View File

@@ -10,7 +10,7 @@ import (
"sigs.k8s.io/kustomize/api/types"
)
func writeDeployment(th testingHarness, path string) {
func writeDeployment(th kusttest_test.Harness, path string) {
th.WriteF(path, `
apiVersion: apps/v1
kind: Deployment
@@ -28,7 +28,7 @@ spec:
`)
}
func writeStringPrefixer(th testingHarness, path, name string) {
func writeStringPrefixer(th kusttest_test.Harness, path, name string) {
th.WriteF(path, `
apiVersion: someteam.example.com/v1
kind: StringPrefixer
@@ -37,7 +37,7 @@ metadata:
`)
}
func writeDatePrefixer(th testingHarness, path, name string) {
func writeDatePrefixer(th kusttest_test.Harness, path, name string) {
th.WriteF(path, `
apiVersion: someteam.example.com/v1
kind: DatePrefixer
@@ -55,7 +55,7 @@ func TestOrderedTransformers(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "DatePrefixer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- deployment.yaml
@@ -95,7 +95,7 @@ func TestPluginsNotEnabled(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "StringPrefixer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
transformers:
- stringPrefixer.yaml
@@ -117,7 +117,7 @@ func TestSedTransformer(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "SedTransformer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- configmap.yaml
@@ -185,7 +185,7 @@ func TestTransformedTransformers(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "DatePrefixer")
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
resources:

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func makeStatefulSetKustomization(th testingHarness) {
func makeStatefulSetKustomization(th kusttest_test.Harness) {
th.WriteK("/app", `
commonLabels:
notIn: arrays
@@ -90,7 +92,7 @@ spec:
}
func TestTransformersNoCreateArrays(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeStatefulSetKustomization(th)
m := th.Run("/app", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `

View File

@@ -5,9 +5,11 @@ package krusty_test
import (
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func makeTransfomersImageBase(th testingHarness) {
func makeTransfomersImageBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- deploy1.yaml
@@ -92,7 +94,7 @@ spec3:
}
func TestIssue1281_JsonPatchAndImageTag(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
resources:
- deployment.yaml
@@ -172,7 +174,7 @@ spec:
}
func TestTransfomersImageDefaultConfig(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeTransfomersImageBase(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -233,7 +235,7 @@ spec3:
`)
}
func makeTransfomersImageCustomBase(th testingHarness) {
func makeTransfomersImageCustomBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- custom.yaml
@@ -306,7 +308,7 @@ images:
}
func TestTransfomersImageCustomConfig(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeTransfomersImageCustomBase(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
@@ -346,7 +348,7 @@ spec3:
`)
}
func makeTransfomersImageKnativeBase(th testingHarness) {
func makeTransfomersImageKnativeBase(th kusttest_test.Harness) {
th.WriteK("/app/base", `
resources:
- knative.yaml
@@ -378,7 +380,7 @@ images:
}
func TestTransfomersImageKnativeConfig(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
makeTransfomersImageKnativeBase(th)
m := th.Run("/app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `

View File

@@ -6,10 +6,12 @@ package krusty_test
import (
"strings"
"testing"
kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)
func TestBasicVariableRef(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app", `
namePrefix: base-
resources:
@@ -60,7 +62,7 @@ spec:
}
func TestBasicVarCollision(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base1", `
namePrefix: base1-
resources:
@@ -136,7 +138,7 @@ resources:
}
func TestVarPropagatesUp(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base1", `
namePrefix: base1-
resources:
@@ -279,7 +281,7 @@ spec:
// are global. So if a base with a variable is included
// twice, it's a collision, so it's denied.
func TestBug506(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
namePrefix: base-
resources:
@@ -359,7 +361,7 @@ resources:
}
func TestVarRefBig(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
namePrefix: base-
resources:
@@ -925,7 +927,7 @@ metadata:
}
func TestVariableRefIngress(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
resources:
- service.yaml
@@ -1064,7 +1066,7 @@ spec:
}
func TestVariableRefMountPath(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
resources:
- deployment.yaml
@@ -1136,7 +1138,7 @@ metadata:
}
func TestVariableRefMaps(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
resources:
- deployment.yaml
@@ -1192,7 +1194,7 @@ metadata:
}
func TestVaribaleRefDifferentPrefix(t *testing.T) {
th := makeTestHarness(t)
th := kusttest_test.MakeHarness(t)
th.WriteK("/app/base", `
namePrefix: base-
resources:

View File

@@ -0,0 +1,126 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package kusttest_test
import (
"path/filepath"
"strings"
"testing"
"sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/konfig/builtinpluginconsts"
"sigs.k8s.io/kustomize/api/krusty"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/types"
)
// Harness manages a kustomize environment for tests.
type Harness struct {
t *testing.T
fSys filesys.FileSystem
}
func MakeHarness(t *testing.T) Harness {
return MakeHarnessWithFs(t, filesys.MakeFsInMemory())
}
func MakeHarnessWithFs(
t *testing.T, fSys filesys.FileSystem) Harness {
return Harness{
t: t,
fSys: fSys,
}
}
func (th Harness) GetT() *testing.T {
return th.t
}
func (th Harness) GetFSys() filesys.FileSystem {
return th.fSys
}
func (th Harness) WriteK(path string, content string) {
th.fSys.WriteFile(
filepath.Join(
path,
konfig.DefaultKustomizationFileName()), []byte(`
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
`+content))
}
func (th Harness) WriteF(path string, content string) {
th.fSys.WriteFile(path, []byte(content))
}
func (th Harness) MakeDefaultOptions() krusty.Options {
return th.MakeOptionsPluginsDisabled()
}
// This has no impact on Builtin plugins, as they are always enabled.
func (th Harness) MakeOptionsPluginsDisabled() krusty.Options {
return krusty.Options{
LoadRestrictions: types.LoadRestrictionsRootOnly,
PluginConfig: konfig.DisabledPluginConfig(),
}
}
// Enables use of non-builtin plugins.
func (th Harness) MakeOptionsPluginsEnabled() krusty.Options {
c, err := konfig.EnabledPluginConfig()
if err != nil {
if strings.Contains(err.Error(), "unable to find plugin root") {
th.t.Log(
"Tests that want to run with plugins enabled must be " +
"bookended by calls to NewPluginTestEnv.Set(), Reset().")
}
th.t.Fatal(err)
}
return krusty.Options{
LoadRestrictions: types.LoadRestrictionsRootOnly,
PluginConfig: c,
}
}
// Run, failing on error.
func (th Harness) Run(path string, o krusty.Options) resmap.ResMap {
m, err := krusty.MakeKustomizer(th.fSys, &o).Run(path)
if err != nil {
th.t.Fatal(err)
}
return m
}
// Run, failing if there is no error.
func (th Harness) RunWithErr(path string, o krusty.Options) error {
_, err := krusty.MakeKustomizer(th.fSys, &o).Run(path)
if err == nil {
th.t.Fatalf("expected error")
}
return err
}
func (th Harness) WriteLegacyConfigs(fName string) {
m := builtinpluginconsts.GetDefaultFieldSpecsAsMap()
var content []byte
for _, tCfg := range m {
content = append(content, []byte(tCfg)...)
}
err := th.fSys.WriteFile(fName, content)
if err != nil {
th.t.Fatalf("unable to add file %s", fName)
}
}
func (th Harness) AssertActualEqualsExpected(
m resmap.ResMap, expected string) {
th.AssertActualEqualsExpectedWithTweak(m, nil, expected)
}
func (th Harness) AssertActualEqualsExpectedWithTweak(
m resmap.ResMap, tweaker func([]byte) []byte, expected string) {
assertActualEqualsExpectedWithTweak(th, m, tweaker, expected)
}

View File

@@ -0,0 +1,104 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package kusttest_test
import (
"testing"
"sigs.k8s.io/kustomize/api/filesys"
"sigs.k8s.io/kustomize/api/internal/k8sdeps/transformer"
"sigs.k8s.io/kustomize/api/internal/loadertest"
pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader"
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/konfig"
fLdr "sigs.k8s.io/kustomize/api/loader"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
)
// HarnessEnhanced manages a full plugin environment for tests.
// TODO: get rid of this. Combine Harness and PluginTestEnv.
type HarnessEnhanced struct {
Harness
rf *resmap.Factory
ldr loadertest.FakeLoader
pl *pLdr.Loader
}
func MakeHarnessEnhanced(
t *testing.T, path string) *HarnessEnhanced {
pc, err := konfig.EnabledPluginConfig()
if err != nil {
t.Fatal(err)
}
fSys := filesys.MakeFsInMemory()
rf := resmap.NewFactory(
resource.NewFactory(kunstruct.NewKunstructuredFactoryImpl()),
transformer.NewFactoryImpl())
return &HarnessEnhanced{
Harness: Harness{t: t, fSys: fSys},
rf: rf,
ldr: loadertest.NewFakeLoaderWithRestrictor(
fLdr.RestrictionRootOnly, fSys, path),
pl: pLdr.NewLoader(pc, rf)}
}
func (th *HarnessEnhanced) LoadAndRunGenerator(
config string) resmap.ResMap {
res, err := th.rf.RF().FromBytes([]byte(config))
if err != nil {
th.t.Fatalf("Err: %v", err)
}
g, err := th.pl.LoadGenerator(
th.ldr, valtest_test.MakeFakeValidator(), res)
if err != nil {
th.t.Fatalf("Err: %v", err)
}
rm, err := g.Generate()
if err != nil {
th.t.Fatalf("Err: %v", err)
}
return rm
}
func (th *HarnessEnhanced) LoadAndRunTransformer(
config, input string) resmap.ResMap {
resMap, err := th.RunTransformer(config, input)
if err != nil {
th.t.Fatalf("Err: %v", err)
}
return resMap
}
func (th *HarnessEnhanced) ErrorFromLoadAndRunTransformer(
config, input string) error {
_, err := th.RunTransformer(config, input)
return err
}
func (th *HarnessEnhanced) RunTransformer(
config, input string) (resmap.ResMap, error) {
resMap, err := th.rf.NewResMapFromBytes([]byte(input))
if err != nil {
th.t.Fatalf("Err: %v", err)
}
return th.RunTransformerFromResMap(config, resMap)
}
func (th *HarnessEnhanced) RunTransformerFromResMap(
config string, resMap resmap.ResMap) (resmap.ResMap, error) {
transConfig, err := th.rf.RF().FromBytes([]byte(config))
if err != nil {
th.t.Fatalf("Err: %v", err)
}
g, err := th.pl.LoadTransformer(
th.ldr, valtest_test.MakeFakeValidator(), transConfig)
if err != nil {
return nil, err
}
err = g.Transform(resMap)
return resMap, err
}

View File

@@ -0,0 +1,104 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package kusttest_test
import (
"fmt"
"strings"
"testing"
"sigs.k8s.io/kustomize/api/resmap"
)
type hasGetT interface {
GetT() *testing.T
}
func assertActualEqualsExpectedWithTweak(
ht hasGetT,
m resmap.ResMap,
tweaker func([]byte) []byte, expected string) {
if m == nil {
ht.GetT().Fatalf("Map should not be nil.")
}
// Ignore leading linefeed in expected value
// to ease readability of tests.
if len(expected) > 0 && expected[0] == 10 {
expected = expected[1:]
}
actual, err := m.AsYaml()
if err != nil {
ht.GetT().Fatalf("Unexpected err: %v", err)
}
if tweaker != nil {
actual = tweaker(actual)
}
if string(actual) != expected {
reportDiffAndFail(ht.GetT(), actual, expected)
}
}
// Pretty printing of file differences.
func reportDiffAndFail(
t *testing.T, actual []byte, expected string) {
sE, maxLen := convertToArray(expected)
sA, _ := convertToArray(string(actual))
fmt.Println("===== ACTUAL BEGIN ========================================")
fmt.Print(string(actual))
fmt.Println("===== ACTUAL END ==========================================")
format := fmt.Sprintf("%%s %%-%ds %%s\n", maxLen+4)
limit := 0
if len(sE) < len(sA) {
limit = len(sE)
} else {
limit = len(sA)
}
fmt.Printf(format, " ", "EXPECTED", "ACTUAL")
fmt.Printf(format, " ", "--------", "------")
for i := 0; i < limit; i++ {
fmt.Printf(format, hint(sE[i], sA[i]), sE[i], sA[i])
}
if len(sE) < len(sA) {
for i := len(sE); i < len(sA); i++ {
fmt.Printf(format, "X", "", sA[i])
}
} else {
for i := len(sA); i < len(sE); i++ {
fmt.Printf(format, "X", sE[i], "")
}
}
t.Fatalf("Expected not equal to actual")
}
func hint(a, b string) string {
if a == b {
return " "
}
return "X"
}
func convertToArray(x string) ([]string, int) {
a := strings.Split(strings.TrimSuffix(x, "\n"), "\n")
maxLen := 0
for i, v := range a {
z := tabToSpace(v)
if len(z) > maxLen {
maxLen = len(z)
}
a[i] = z
}
return a, maxLen
}
func tabToSpace(input string) string {
var result []string
for _, i := range input {
if i == 9 {
result = append(result, " ")
} else {
result = append(result, string(i))
}
}
return strings.Join(result, "")
}

View File

@@ -1,267 +0,0 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0
package kusttest_test
import (
"fmt"
"path/filepath"
"strings"
"testing"
"sigs.k8s.io/kustomize/api/internal/k8sdeps/transformer"
"sigs.k8s.io/kustomize/api/internal/loadertest"
pLdr "sigs.k8s.io/kustomize/api/internal/plugins/loader"
"sigs.k8s.io/kustomize/api/internal/target"
"sigs.k8s.io/kustomize/api/k8sdeps/kunstruct"
"sigs.k8s.io/kustomize/api/konfig"
"sigs.k8s.io/kustomize/api/konfig/builtinpluginconsts"
fLdr "sigs.k8s.io/kustomize/api/loader"
"sigs.k8s.io/kustomize/api/resmap"
"sigs.k8s.io/kustomize/api/resource"
valtest_test "sigs.k8s.io/kustomize/api/testutils/valtest"
"sigs.k8s.io/kustomize/api/types"
)
// KustTestHarness is an environment for running a kustomize build,
// aka a run of MakeCustomizedResMap. It holds a file loader
// presumably primed with an in-memory file system, a plugin
// loader, factories to make what it needs, etc.
type KustTestHarness struct {
t *testing.T
rf *resmap.Factory
ldr loadertest.FakeLoader
pl *pLdr.Loader
}
func NewKustTestHarness(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull(
t, path, fLdr.RestrictionRootOnly, konfig.DisabledPluginConfig())
}
func NewKustTestHarnessAllowPlugins(t *testing.T, path string) *KustTestHarness {
c, err := konfig.EnabledPluginConfig()
if err != nil {
t.Fatal(err)
}
return NewKustTestHarnessFull(t, path, fLdr.RestrictionRootOnly, c)
}
func NewKustTestHarnessNoLoadRestrictor(t *testing.T, path string) *KustTestHarness {
return NewKustTestHarnessFull(
t, path, fLdr.RestrictionNone, konfig.DisabledPluginConfig())
}
func NewKustTestHarnessFull(
t *testing.T, path string,
lr fLdr.LoadRestrictorFunc, pc *types.PluginConfig) *KustTestHarness {
rf := resmap.NewFactory(resource.NewFactory(
kunstruct.NewKunstructuredFactoryImpl()), transformer.NewFactoryImpl())
return &KustTestHarness{
t: t,
rf: rf,
ldr: loadertest.NewFakeLoaderWithRestrictor(lr, path),
pl: pLdr.NewLoader(pc, rf)}
}
func (th *KustTestHarness) MakeKustTarget() *target.KustTarget {
kt := target.NewKustTarget(
th.ldr, valtest_test.MakeFakeValidator(), th.rf,
transformer.NewFactoryImpl(), th.pl)
err := kt.Load()
if err != nil {
th.t.Fatalf("Unexpected construction error %v", err)
}
return kt
}
func (th *KustTestHarness) WriteF(dir string, content string) {
err := th.ldr.AddFile(dir, []byte(content))
if err != nil {
th.t.Fatalf("failed write to %s; %v", dir, err)
}
}
func (th *KustTestHarness) WriteK(dir string, content string) {
th.WriteF(
filepath.Join(
dir,
konfig.DefaultKustomizationFileName()), `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
`+content)
}
func (th *KustTestHarness) RF() *resource.Factory {
return th.rf.RF()
}
func (th *KustTestHarness) FromMap(m map[string]interface{}) *resource.Resource {
return th.rf.RF().FromMap(m)
}
func (th *KustTestHarness) FromMapAndOption(
m map[string]interface{},
args *types.GeneratorArgs,
option *types.GeneratorOptions) *resource.Resource {
return th.rf.RF().FromMapAndOption(m, args, option)
}
func (th *KustTestHarness) WriteDefaultConfigs(fName string) {
m := builtinpluginconsts.GetDefaultFieldSpecsAsMap()
var content []byte
for _, tCfg := range m {
content = append(content, []byte(tCfg)...)
}
err := th.ldr.AddFile(fName, content)
if err != nil {
th.t.Fatalf("unable to add file %s", fName)
}
}
func (th *KustTestHarness) LoadAndRunGenerator(
config string) resmap.ResMap {
res, err := th.rf.RF().FromBytes([]byte(config))
if err != nil {
th.t.Fatalf("Err: %v", err)
}
g, err := th.pl.LoadGenerator(
th.ldr, valtest_test.MakeFakeValidator(), res)
if err != nil {
th.t.Fatalf("Err: %v", err)
}
rm, err := g.Generate()
if err != nil {
th.t.Fatalf("Err: %v", err)
}
return rm
}
func (th *KustTestHarness) LoadAndRunTransformer(
config, input string) resmap.ResMap {
resMap, err := th.RunTransformer(config, input)
if err != nil {
th.t.Fatalf("Err: %v", err)
}
return resMap
}
func (th *KustTestHarness) ErrorFromLoadAndRunTransformer(
config, input string) error {
_, err := th.RunTransformer(config, input)
return err
}
func (th *KustTestHarness) RunTransformer(
config, input string) (resmap.ResMap, error) {
resMap, err := th.rf.NewResMapFromBytes([]byte(input))
if err != nil {
th.t.Fatalf("Err: %v", err)
}
return th.RunTransformerFromResMap(config, resMap)
}
func (th *KustTestHarness) RunTransformerFromResMap(
config string, resMap resmap.ResMap) (resmap.ResMap, error) {
transConfig, err := th.rf.RF().FromBytes([]byte(config))
if err != nil {
th.t.Fatalf("Err: %v", err)
}
g, err := th.pl.LoadTransformer(
th.ldr, valtest_test.MakeFakeValidator(), transConfig)
if err != nil {
return nil, err
}
err = g.Transform(resMap)
return resMap, err
}
func tabToSpace(input string) string {
var result []string
for _, i := range input {
if i == 9 {
result = append(result, " ")
} else {
result = append(result, string(i))
}
}
return strings.Join(result, "")
}
func convertToArray(x string) ([]string, int) {
a := strings.Split(strings.TrimSuffix(x, "\n"), "\n")
maxLen := 0
for i, v := range a {
z := tabToSpace(v)
if len(z) > maxLen {
maxLen = len(z)
}
a[i] = z
}
return a, maxLen
}
func hint(a, b string) string {
if a == b {
return " "
}
return "X"
}
func (th *KustTestHarness) AssertActualEqualsExpected(
m resmap.ResMap, expected string) {
th.AssertActualEqualsExpectedWithTweak(m, nil, expected)
}
func (th *KustTestHarness) AssertActualEqualsExpectedWithTweak(
m resmap.ResMap, tweaker func([]byte) []byte, expected string) {
if m == nil {
th.t.Fatalf("Map should not be nil.")
}
// Ignore leading linefeed in expected value
// to ease readability of tests.
if len(expected) > 0 && expected[0] == 10 {
expected = expected[1:]
}
actual, err := m.AsYaml()
if err != nil {
th.t.Fatalf("Unexpected err: %v", err)
}
if tweaker != nil {
actual = tweaker(actual)
}
if string(actual) != expected {
th.reportDiffAndFail(actual, expected)
}
}
// Pretty printing of file differences.
func (th *KustTestHarness) reportDiffAndFail(actual []byte, expected string) {
sE, maxLen := convertToArray(expected)
sA, _ := convertToArray(string(actual))
fmt.Println("===== ACTUAL BEGIN ========================================")
fmt.Print(string(actual))
fmt.Println("===== ACTUAL END ==========================================")
format := fmt.Sprintf("%%s %%-%ds %%s\n", maxLen+4)
limit := 0
if len(sE) < len(sA) {
limit = len(sE)
} else {
limit = len(sA)
}
fmt.Printf(format, " ", "EXPECTED", "ACTUAL")
fmt.Printf(format, " ", "--------", "------")
for i := 0; i < limit; i++ {
fmt.Printf(format, hint(sE[i], sA[i]), sE[i], sA[i])
}
if len(sE) < len(sA) {
for i := len(sE); i < len(sA); i++ {
fmt.Printf(format, "X", "", sA[i])
}
} else {
for i := len(sA); i < len(sE); i++ {
fmt.Printf(format, "X", sE[i], "")
}
}
th.t.Fatalf("Expected not equal to actual")
}

View File

@@ -1,4 +1,4 @@
for f in $(find ./ -name '*.go'); do
for f in $(find $1 -name '*.go'); do
echo $f
# go run go.coder.com/go-tools/cmd/goimports
~/gopath/bin/goimports -w $f

View File

@@ -16,7 +16,7 @@ func TestAnnotationsTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "AnnotationsTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -16,7 +16,7 @@ func TestConfigMapGenerator(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ConfigMapGenerator")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/devops.env", `
SERVICE_PORT=32

View File

@@ -16,7 +16,7 @@ func TestHashTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "HashTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -16,7 +16,7 @@ func TestImageTagTransformerNewTag(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ImageTagTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -87,7 +87,7 @@ func TestImageTagTransformerNewImage(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ImageTagTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -159,7 +159,7 @@ func TestImageTagTransformerNewImageAndTag(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ImageTagTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -232,7 +232,7 @@ func TestImageTagTransformerNewDigest(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ImageTagTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -304,7 +304,7 @@ func TestImageTagTransformerNewImageAndDigest(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ImageTagTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -376,7 +376,7 @@ func TestImageTagTransformerEmptyContainers(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ImageTagTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -64,7 +64,7 @@ func TestInventoryTransformerCollect(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "InventoryTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -85,7 +85,7 @@ func TestInventoryTransformerIgnore(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "InventoryTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -106,7 +106,7 @@ func TestInventoryTransformerDefaultPolicy(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "InventoryTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -16,7 +16,7 @@ func TestLabelTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "LabelTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -16,7 +16,7 @@ func TestLegacyOrderTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "LegacyOrderTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
kind: LegacyOrderTransformer

View File

@@ -17,7 +17,7 @@ func TestNamespaceTransformer1(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "NamespaceTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -195,7 +195,7 @@ func TestNamespaceTransformerClusterLevelKinds(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "NamespaceTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
const noChangeExpected = `
apiVersion: v1
@@ -246,7 +246,7 @@ func TestNamespaceTransformerObjectConflict(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "NamespaceTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
err := th.ErrorFromLoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -34,7 +34,7 @@ func TestPatchJson6902TransformerMissingFile(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -63,7 +63,7 @@ func TestBadPatchJson6902Transformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -92,7 +92,7 @@ func TestBothEmptyJson6902Transformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -120,7 +120,7 @@ func TestBothSpecifiedJson6902Transformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/jsonpatch.json", `[
{"op": "replace", "path": "/spec/template/spec/containers/0/name", "value": "my-nginx"},
@@ -156,7 +156,7 @@ func TestPatchJson6902TransformerFromJsonFile(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/jsonpatch.json", `[
{"op": "replace", "path": "/spec/template/spec/containers/0/name", "value": "my-nginx"},
@@ -206,7 +206,7 @@ func TestPatchJson6902TransformerFromYamlFile(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/jsonpatch.json", `
- op: add
@@ -256,7 +256,7 @@ func TestPatchJson6902TransformerWithInlineJSON(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -297,7 +297,7 @@ func TestPatchJson6902TransformerWithInlineYAML(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchJson6902Transformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -63,7 +63,7 @@ func TestPatchStrategicMergeTransformerMissingFile(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -91,7 +91,7 @@ func TestBadPatchStrategicMergeTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -116,7 +116,7 @@ func TestBothEmptyPatchStrategicMergeTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -139,7 +139,7 @@ func TestPatchStrategicMergeTransformerFromFiles(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch.yaml", `
apiVersion: apps/v1
@@ -189,7 +189,7 @@ func TestPatchStrategicMergeTransformerWithInlineJSON(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -224,7 +224,7 @@ func TestPatchStrategicMergeTransformerWithInlineYAML(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -276,7 +276,7 @@ func TestPatchStrategicMergeTransformerMultiplePatches(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch1.yaml", `
apiVersion: apps/v1
@@ -353,7 +353,7 @@ func TestStrategicMergeTransformerMultiplePatchesWithConflicts(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch1.yaml", `
apiVersion: apps/v1
@@ -414,7 +414,7 @@ func TestStrategicMergeTransformerWrongNamespace(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch.yaml", `
apiVersion: apps/v1
@@ -457,7 +457,7 @@ func TestStrategicMergeTransformerNoSchema(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch.yaml", `
apiVersion: example.com/v1
@@ -497,7 +497,7 @@ func TestStrategicMergeTransformerNoSchemaMultiPatches(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch1.yaml", `
apiVersion: example.com/v1
@@ -553,7 +553,7 @@ func TestStrategicMergeTransformerNoSchemaMultiPatchesWithConflict(t *testing.T)
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch1.yaml", `
apiVersion: example.com/v1
@@ -889,7 +889,7 @@ func TestSinglePatch(t *testing.T) {
"builtin", "", "PatchStrategicMergeTransformer")
for _, test := range tests {
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, fmt.Sprintf("/%s", test.name))
th := kusttest_test.MakeHarnessEnhanced(t, fmt.Sprintf("/%s", test.name))
th.WriteF(fmt.Sprintf("/%s/patch%d.yaml", test.name, 0), test.patch)
if test.errorExpected {
@@ -992,7 +992,7 @@ func TestMultiplePatches(t *testing.T) {
"builtin", "", "PatchStrategicMergeTransformer")
for _, test := range tests {
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, fmt.Sprintf("/%s", test.name))
th := kusttest_test.MakeHarnessEnhanced(t, fmt.Sprintf("/%s", test.name))
for idx, patch := range test.patch {
th.WriteF(fmt.Sprintf("/%s/patch%d.yaml", test.name, idx), patch)
}
@@ -1123,7 +1123,7 @@ func TestMultiplePatchesWithConflict(t *testing.T) {
"builtin", "", "PatchStrategicMergeTransformer")
for _, test := range tests {
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, fmt.Sprintf("/%s", test.name))
th := kusttest_test.MakeHarnessEnhanced(t, fmt.Sprintf("/%s", test.name))
for idx, patch := range test.patch {
th.WriteF(fmt.Sprintf("/%s/patch%d.yaml", test.name, idx), patch)
}
@@ -1232,7 +1232,7 @@ func TestMultipleNamespaces(t *testing.T) {
"builtin", "", "PatchStrategicMergeTransformer")
for _, test := range tests {
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, fmt.Sprintf("/%s", test.name))
th := kusttest_test.MakeHarnessEnhanced(t, fmt.Sprintf("/%s", test.name))
for idx, patch := range test.patch {
th.WriteF(fmt.Sprintf("/%s/patch%d.yaml", test.name, idx), patch)
}
@@ -1254,7 +1254,7 @@ func TestPatchStrategicMergeTransformerPatchDelete(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchStrategicMergeTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch.yaml", `
apiVersion: apps/v1

View File

@@ -70,7 +70,7 @@ func TestPatchTransformerMissingFile(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -94,7 +94,7 @@ func TestPatchTransformerBadPatch(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -118,7 +118,7 @@ func TestPatchTransformerMissingSelector(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -143,7 +143,7 @@ func TestPatchTransformerBothEmptyPathAndPatch(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -166,7 +166,7 @@ func TestPatchTransformerBothNonEmptyPathAndPatch(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
_, err := th.RunTransformer(`
apiVersion: builtin
@@ -191,7 +191,7 @@ func TestPatchTransformerFromFiles(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/patch.yaml", `
apiVersion: apps/v1
@@ -273,7 +273,7 @@ func TestPatchTransformerWithInline(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PatchTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -16,7 +16,7 @@ func TestPrefixSuffixTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "PrefixSuffixTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
kind: PrefixSuffixTransformer

View File

@@ -16,7 +16,7 @@ func TestReplicaCountTransformer(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "ReplicaCountTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -158,7 +158,7 @@ func TestMatchesCurrentID(t *testing.T) {
tc.BuildGoPlugin("builtin", "", "PrefixSuffixTransformer")
tc.BuildGoPlugin("builtin", "", "ReplicaCountTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: builtin
@@ -203,7 +203,7 @@ func TestNoMatch(t *testing.T) {
tc.BuildGoPlugin("builtin", "", "ReplicaCountTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
err := th.ErrorFromLoadAndRunTransformer(`
apiVersion: builtin

View File

@@ -16,7 +16,7 @@ func TestSecretGenerator(t *testing.T) {
tc.BuildGoPlugin(
"builtin", "", "SecretGenerator")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/a.env", `
ROUTER_PASSWORD=admin

View File

@@ -16,7 +16,7 @@ func TestBashedConfigMapPlugin(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "BashedConfigMap")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1

View File

@@ -25,7 +25,7 @@ func TestChartInflator(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "ChartInflator")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1

View File

@@ -15,7 +15,7 @@ func TestDatePrefixerPlugin(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "DatePrefixer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunTransformer(`
apiVersion: someteam.example.com/v1

View File

@@ -22,7 +22,7 @@ func TestGoGetter(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "GoGetter")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1
@@ -50,7 +50,7 @@ func TestGoGetterUrl(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "GoGetter")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1
@@ -79,7 +79,7 @@ func TestGoGetterCommand(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "GoGetter")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1
@@ -108,7 +108,7 @@ func TestGoGetterSubPath(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "GoGetter")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1

View File

@@ -23,7 +23,7 @@ func TestPrintPluginEnvPlugin(t *testing.T) {
tc.PrepExecPlugin(
"someteam.example.com", "v1", "PrintPluginEnv")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/theAppRoot")
th := kusttest_test.MakeHarnessEnhanced(t, "/theAppRoot")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1

View File

@@ -16,7 +16,7 @@ func TestSecretsFromDatabasePlugin(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "SecretsFromDatabase")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1

View File

@@ -14,7 +14,7 @@ func TestSedTransformer(t *testing.T) {
defer tc.Reset()
tc.PrepExecPlugin("someteam.example.com", "v1", "SedTransformer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
th.WriteF("/app/sed-input.txt", `
s/$FRUIT/orange/g

View File

@@ -16,7 +16,7 @@ func TestSomeServiceGeneratorPlugin(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "SomeServiceGenerator")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunGenerator(`
apiVersion: someteam.example.com/v1

View File

@@ -15,7 +15,7 @@ func TestStringPrefixerPlugin(t *testing.T) {
tc.BuildGoPlugin(
"someteam.example.com", "v1", "StringPrefixer")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
m := th.LoadAndRunTransformer(`
apiVersion: someteam.example.com/v1

View File

@@ -17,7 +17,7 @@ func TestValidatorHappy(t *testing.T) {
defer tc.Reset()
tc.PrepExecPlugin("someteam.example.com", "v1", "Validator")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
rm := th.LoadAndRunTransformer(`
apiVersion: someteam.example.com/v1
@@ -52,7 +52,7 @@ func TestValidatorUnHappy(t *testing.T) {
defer tc.Reset()
tc.PrepExecPlugin("someteam.example.com", "v1", "Validator")
th := kusttest_test.NewKustTestHarnessAllowPlugins(t, "/app")
th := kusttest_test.MakeHarnessEnhanced(t, "/app")
err := th.ErrorFromLoadAndRunTransformer(`
apiVersion: someteam.example.com/v1