diff --git a/hack/make-rules/test-cmd.sh b/hack/make-rules/test-cmd.sh index 3260627441a..12608d47772 100755 --- a/hack/make-rules/test-cmd.sh +++ b/hack/make-rules/test-cmd.sh @@ -988,6 +988,21 @@ __EOF__ # Clean up kubectl delete pods test-pod "${kube_flags[@]}" + + ## kubectl apply -f with label selector should only apply matching objects + # Pre-Condition: no POD exists + kube::test::get_object_assert pods "{{range.items}}{{$id_field}}:{{end}}" '' + # apply + kubectl apply -l unique-label=bingbang -f hack/testdata/filter "${kube_flags[@]}" + # check right pod exists + kube::test::get_object_assert 'pods selector-test-pod' "{{${labels_field}.name}}" 'selector-test-pod' + # check wrong pod doesn't exist + output_message=$(! kubectl get pods selector-test-pod-dont-apply 2>&1 "${kube_flags[@]}") + kube::test::if_has_string "${output_message}" 'pods "selector-test-pod-dont-apply" not found' + # cleanup + kubectl delete pods selector-test-pod + + ## kubectl run should create deployments or jobs # Pre-Condition: no Job exists kube::test::get_object_assert jobs "{{range.items}}{{$id_field}}:{{end}}" '' diff --git a/hack/testdata/filter/pod-apply-selector.yaml b/hack/testdata/filter/pod-apply-selector.yaml new file mode 100644 index 00000000000..73b83d6ba37 --- /dev/null +++ b/hack/testdata/filter/pod-apply-selector.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: selector-test-pod + labels: + name: selector-test-pod + unique-label: bingbang +spec: + containers: + - name: kubernetes-pause + image: gcr.io/google-containers/pause:2.0 diff --git a/hack/testdata/filter/pod-dont-apply.yaml b/hack/testdata/filter/pod-dont-apply.yaml new file mode 100644 index 00000000000..7ea1610de90 --- /dev/null +++ b/hack/testdata/filter/pod-dont-apply.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Pod +metadata: + name: selector-test-pod-dont-apply + labels: + name: selector-test-pod-dont-apply + unique-label: biz +spec: + containers: + - name: kubernetes-pause + image: gcr.io/google-containers/pause:2.0