From f50638f43952c38d6f9fd637460ed76bd238dfcf Mon Sep 17 00:00:00 2001 From: Jordan Liggitt Date: Wed, 18 Dec 2019 23:15:11 -0500 Subject: [PATCH] Isolate kubectl test-cmd plugin tests --- test/cmd/plugins.sh | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/test/cmd/plugins.sh b/test/cmd/plugins.sh index 83c03e3bd73..33a238ecf09 100755 --- a/test/cmd/plugins.sh +++ b/test/cmd/plugins.sh @@ -24,24 +24,28 @@ run_plugins_tests() { kube::log::status "Testing kubectl plugins" + # Create a folder which only contains our kubectl executable + TEMP_PATH=$(mktemp -d /tmp/tmp-kubectl-path-XXXXX) + ln -s "$(which kubectl)" "${TEMP_PATH}/kubectl" + # test plugins that overwrite existing kubectl commands - output_message=$(! PATH=${PATH}:"test/fixtures/pkg/kubectl/plugins/version" kubectl plugin list 2>&1) + output_message=$(! PATH=${TEMP_PATH}:"test/fixtures/pkg/kubectl/plugins/version" kubectl plugin list 2>&1) kube::test::if_has_string "${output_message}" 'kubectl-version overwrites existing command: "kubectl version"' # test plugins that overwrite similarly-named plugins - output_message=$(! PATH=${PATH}:"test/fixtures/pkg/kubectl/plugins:test/fixtures/pkg/kubectl/plugins/foo" kubectl plugin list 2>&1) + output_message=$(! PATH=${TEMP_PATH}:"test/fixtures/pkg/kubectl/plugins:test/fixtures/pkg/kubectl/plugins/foo" kubectl plugin list 2>&1) kube::test::if_has_string "${output_message}" 'test/fixtures/pkg/kubectl/plugins/foo/kubectl-foo is overshadowed by a similarly named plugin' # test plugins with no warnings - output_message=$(PATH=${PATH}:"test/fixtures/pkg/kubectl/plugins" kubectl plugin list 2>&1) + output_message=$(PATH=${TEMP_PATH}:"test/fixtures/pkg/kubectl/plugins" kubectl plugin list 2>&1) kube::test::if_has_string "${output_message}" 'plugins are available' # no plugins - output_message=$(! PATH=${PATH}:"test/fixtures/pkg/kubectl/plugins/empty" kubectl plugin list 2>&1) + output_message=$(! PATH=${TEMP_PATH}:"test/fixtures/pkg/kubectl/plugins/empty" kubectl plugin list 2>&1) kube::test::if_has_string "${output_message}" 'unable to find any kubectl plugins in your PATH' # attempt to run a plugin in the user's PATH - output_message=$(PATH=${PATH}:"test/fixtures/pkg/kubectl/plugins" kubectl foo) + output_message=$(PATH=${TEMP_PATH}:"test/fixtures/pkg/kubectl/plugins" kubectl foo) kube::test::if_has_string "${output_message}" 'plugin foo' # check arguments passed to the plugin @@ -49,10 +53,12 @@ run_plugins_tests() { kube::test::if_has_string "${output_message}" 'test/fixtures/pkg/kubectl/plugins/bar/kubectl-bar arg1' # ensure that a kubectl command supersedes a plugin that overshadows it - output_message=$(PATH=${PATH}:"test/fixtures/pkg/kubectl/plugins/version" kubectl version) + output_message=$(PATH=${TEMP_PATH}:"test/fixtures/pkg/kubectl/plugins/version" kubectl version --client) kube::test::if_has_string "${output_message}" 'Client Version' kube::test::if_has_not_string "${output_message}" 'overshadows an existing plugin' + rm -fr "${TEMP_PATH}" + set +o nounset set +o errexit }