From 44ac9a9f4448f62040b319a984a2f2439037cff9 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Mon, 13 May 2019 11:42:31 -0700 Subject: [PATCH] Standalone ChartInflator plugin test. --- bin/pre-commit.sh | 7 +- docs/plugins.md | 4 +- examples/chart.md | 6 +- ...in_test.go => chartinflatorplugin_test.go} | 10 +- .../v1/{ChartInflatorExec => ChartInflator} | 4 +- .../v1/ChartInflator_test.go | 103 ++++++++++++++++++ 6 files changed, 120 insertions(+), 14 deletions(-) rename pkg/target/{chartinflatorexecplugin_test.go => chartinflatorplugin_test.go} (93%) rename plugin/someteam.example.com/v1/{ChartInflatorExec => ChartInflator} (95%) create mode 100644 plugin/someteam.example.com/v1/ChartInflator_test.go diff --git a/bin/pre-commit.sh b/bin/pre-commit.sh index c1d828799..4e8a48e94 100755 --- a/bin/pre-commit.sh +++ b/bin/pre-commit.sh @@ -32,10 +32,13 @@ function testGoTest { go test -v ./... } -# This is helm stuff. +# These tests require the helm program, and at the moment +# we're not asking travis to install helm. function testNoTravisGoTest { go test -v sigs.k8s.io/kustomize/pkg/target \ - -run TestChartInflatorExecPlugin -tags=notravis + -run TestChartInflatorPlugin -tags=notravis + go test -v sigs.k8s.io/kustomize/plugin/... \ + -run TestChartInflator -tags=notravis mdrip --mode test --label helmtest README.md ./examples/chart.md } diff --git a/docs/plugins.md b/docs/plugins.md index 502125dcc..397ab7bbf 100644 --- a/docs/plugins.md +++ b/docs/plugins.md @@ -62,7 +62,7 @@ The file `chartInflator.yaml` could contain: ``` apiVersion: someteam.example.com/v1 -kind: ChartInflatorExec +kind: ChartInflator metadata: name: notImportantHere chartName: minecraft @@ -150,7 +150,7 @@ reminder. ### Exec plugins -[chartinflator]: ../plugin/someteam.example.com/v1/ChartInflatorExec +[chartinflator]: ../plugin/someteam.example.com/v1/ChartInflator See this example [helm chart inflator][chartInflator]. diff --git a/examples/chart.md b/examples/chart.md index ce3ce3029..97aa00f24 100644 --- a/examples/chart.md +++ b/examples/chart.md @@ -90,7 +90,7 @@ the arbitrarily chosen chart name _minecraft_: ``` cat <<'EOF' >$DEMO_HOME/base/chartInflator.yaml apiVersion: someteam.example.com/v1 -kind: ChartInflatorExec +kind: ChartInflator metadata: name: notImportantHere chartName: minecraft @@ -108,7 +108,7 @@ executable: ``` -plugin=plugin/someteam.example.com/v1/ChartInflatorExec +plugin=plugin/someteam.example.com/v1/ChartInflator curl -s --create-dirs -o \ "$DEMO_HOME/kustomize/$plugin" \ "https://raw.githubusercontent.com/\ @@ -137,7 +137,7 @@ Expect something like: > │   └── plugin > │   └── someteam.example.com > │   └── v1 -> │   └── ChartInflatorExec +> │   └── ChartInflator > └── prod > └── kustomization.yaml > ``` diff --git a/pkg/target/chartinflatorexecplugin_test.go b/pkg/target/chartinflatorplugin_test.go similarity index 93% rename from pkg/target/chartinflatorexecplugin_test.go rename to pkg/target/chartinflatorplugin_test.go index 5d9da2ce7..500631f2a 100644 --- a/pkg/target/chartinflatorexecplugin_test.go +++ b/pkg/target/chartinflatorplugin_test.go @@ -41,24 +41,24 @@ import ( // // TODO: Download and inflate the chart, and check that // in for the test. -func TestChartInflatorExecPlugin(t *testing.T) { +func TestChartInflatorPlugin(t *testing.T) { tc := plugintest_test.NewPluginTestEnv(t).Set() defer tc.Reset() tc.BuildExecPlugin( - "someteam.example.com", "v1", "ChartInflatorExec") + "someteam.example.com", "v1", "ChartInflator") th := kusttest_test.NewKustTestHarnessWithPluginConfig( t, "/app", plugin.ActivePluginConfig()) th.WriteK("/app", ` generators: -- chartInflatorExec.yaml +- chartInflator.yaml namePrefix: LOOOOOOOONG- `) - th.WriteF("/app/chartInflatorExec.yaml", ` + th.WriteF("/app/chartInflator.yaml", ` apiVersion: someteam.example.com/v1 -kind: ChartInflatorExec +kind: ChartInflator metadata: name: notImportantHere chartName: minecraft diff --git a/plugin/someteam.example.com/v1/ChartInflatorExec b/plugin/someteam.example.com/v1/ChartInflator similarity index 95% rename from plugin/someteam.example.com/v1/ChartInflatorExec rename to plugin/someteam.example.com/v1/ChartInflator index dbffd47cf..d499cc9af 100755 --- a/plugin/someteam.example.com/v1/ChartInflatorExec +++ b/plugin/someteam.example.com/v1/ChartInflator @@ -6,7 +6,7 @@ set -e # Reads a file like this # # apiVersion: kustomize.config.k8s.io/v1 -# kind: ChartInflatorExec +# kind: ChartInflator # metadata: # name: notImportantHere # chartName: nameOfStableChart @@ -21,7 +21,7 @@ set -e # chartDir default: $TMP_DIR/charts # # Example execution: -# ./plugin/someteam.example.com/v1/ChartInflatorExec configFile.yaml +# ./plugin/someteam.example.com/v1/ChartInflator configFile.yaml # Yaml parsing is a ridiculous thing to do in bash, diff --git a/plugin/someteam.example.com/v1/ChartInflator_test.go b/plugin/someteam.example.com/v1/ChartInflator_test.go new file mode 100644 index 000000000..58abc5072 --- /dev/null +++ b/plugin/someteam.example.com/v1/ChartInflator_test.go @@ -0,0 +1,103 @@ +// +build notravis + +/* +Copyright 2019 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. +*/ + +// Disabled on travis, because don't want to install helm on travis. + +package main_test + +import ( + "testing" + + "sigs.k8s.io/kustomize/internal/plugintest" + "sigs.k8s.io/kustomize/k8sdeps/kv/plugin" + "sigs.k8s.io/kustomize/pkg/kusttest" +) + +// This test requires having the helm binary on the PATH. +// +// TODO: Download and inflate the chart, and check that +// in for the test. +func TestChartInflator(t *testing.T) { + tc := plugintest_test.NewPluginTestEnv(t).Set() + defer tc.Reset() + + tc.BuildExecPlugin( + "someteam.example.com", "v1", "ChartInflator") + + th := kusttest_test.NewKustTestHarnessWithPluginConfig( + t, "/app", plugin.ActivePluginConfig()) + + m := th.LoadAndRunGenerator(` +apiVersion: someteam.example.com/v1 +kind: ChartInflator +metadata: + name: notImportantHere +chartName: minecraft`) + + th.AssertActualEqualsExpected(m, ` +apiVersion: v1 +data: + rcon-password: Q0hBTkdFTUUh +kind: Secret +metadata: + labels: + app: release-name-minecraft + chart: minecraft-0.3.2 + heritage: Tiller + release: release-name + name: release-name-minecraft +type: Opaque +--- +apiVersion: v1 +kind: Service +metadata: + labels: + app: release-name-minecraft + chart: minecraft-0.3.2 + heritage: Tiller + release: release-name + name: release-name-minecraft +spec: + ports: + - name: minecraft + port: 25565 + protocol: TCP + targetPort: minecraft + selector: + app: release-name-minecraft + type: LoadBalancer +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + annotations: + volume.alpha.kubernetes.io/storage-class: default + labels: + app: release-name-minecraft + chart: minecraft-0.3.2 + heritage: Tiller + release: release-name + name: release-name-minecraft-datadir +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi +`) +}