@@ -24,35 +24,41 @@ run_plugins_tests() {
24
24
25
25
kube::log::status " Testing kubectl plugins"
26
26
27
+ # Create a folder which only contains our kubectl executable
28
+ TEMP_PATH=$( mktemp -d /tmp/tmp-kubectl-path-XXXXX)
29
+ ln -s " $( which kubectl) " " ${TEMP_PATH} /kubectl"
30
+
27
31
# test plugins that overwrite existing kubectl commands
28
- output_message=$( ! PATH=${PATH } :" test/fixtures/pkg/kubectl/plugins/version" kubectl plugin list 2>&1 )
32
+ output_message=$( ! PATH=${TEMP_PATH } :" test/fixtures/pkg/kubectl/plugins/version" kubectl plugin list 2>&1 )
29
33
kube::test::if_has_string " ${output_message} " ' kubectl-version overwrites existing command: "kubectl version"'
30
34
31
35
# test plugins that overwrite similarly-named plugins
32
- output_message=$( ! PATH=${PATH } :" test/fixtures/pkg/kubectl/plugins:test/fixtures/pkg/kubectl/plugins/foo" kubectl plugin list 2>&1 )
36
+ output_message=$( ! PATH=${TEMP_PATH } :" test/fixtures/pkg/kubectl/plugins:test/fixtures/pkg/kubectl/plugins/foo" kubectl plugin list 2>&1 )
33
37
kube::test::if_has_string " ${output_message} " ' test/fixtures/pkg/kubectl/plugins/foo/kubectl-foo is overshadowed by a similarly named plugin'
34
38
35
39
# test plugins with no warnings
36
- output_message=$( PATH=${PATH } :" test/fixtures/pkg/kubectl/plugins" kubectl plugin list 2>&1 )
40
+ output_message=$( PATH=${TEMP_PATH } :" test/fixtures/pkg/kubectl/plugins" kubectl plugin list 2>&1 )
37
41
kube::test::if_has_string " ${output_message} " ' plugins are available'
38
42
39
43
# no plugins
40
- output_message=$( ! PATH=${PATH } :" test/fixtures/pkg/kubectl/plugins/empty" kubectl plugin list 2>&1 )
44
+ output_message=$( ! PATH=${TEMP_PATH } :" test/fixtures/pkg/kubectl/plugins/empty" kubectl plugin list 2>&1 )
41
45
kube::test::if_has_string " ${output_message} " ' unable to find any kubectl plugins in your PATH'
42
46
43
47
# attempt to run a plugin in the user's PATH
44
- output_message=$( PATH=${PATH } :" test/fixtures/pkg/kubectl/plugins" kubectl foo)
48
+ output_message=$( PATH=${TEMP_PATH } :" test/fixtures/pkg/kubectl/plugins" kubectl foo)
45
49
kube::test::if_has_string " ${output_message} " ' plugin foo'
46
50
47
51
# check arguments passed to the plugin
48
52
output_message=$( PATH=${PATH} :" test/fixtures/pkg/kubectl/plugins/bar" kubectl bar arg1)
49
53
kube::test::if_has_string " ${output_message} " ' test/fixtures/pkg/kubectl/plugins/bar/kubectl-bar arg1'
50
54
51
55
# ensure that a kubectl command supersedes a plugin that overshadows it
52
- output_message=$( PATH=${PATH } :" test/fixtures/pkg/kubectl/plugins/version" kubectl version)
56
+ output_message=$( PATH=${TEMP_PATH } :" test/fixtures/pkg/kubectl/plugins/version" kubectl version --client )
53
57
kube::test::if_has_string " ${output_message} " ' Client Version'
54
58
kube::test::if_has_not_string " ${output_message} " ' overshadows an existing plugin'
55
59
60
+ rm -fr " ${TEMP_PATH} "
61
+
56
62
set +o nounset
57
63
set +o errexit
58
64
}
0 commit comments