From 6e8a1beda7eb036c2494840e7c82a49cbff1d827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Arda=20G=C3=BC=C3=A7l=C3=BC?= Date: Tue, 7 Feb 2023 11:04:05 +0300 Subject: [PATCH] Add integration test for diff --prune --selector This PR adds new integration tests for `kubectl diff --prune -l` to catch possible regressions in the future. --- hack/testdata/prune/a_selector.yaml | 35 +++++++++++++++++++ hack/testdata/prune/a_selector_prune.yaml | 23 ++++++++++++ .../src/k8s.io/kubectl/pkg/cmd/diff/prune.go | 2 +- test/cmd/diff.sh | 20 +++++++++++ 4 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 hack/testdata/prune/a_selector.yaml create mode 100644 hack/testdata/prune/a_selector_prune.yaml diff --git a/hack/testdata/prune/a_selector.yaml b/hack/testdata/prune/a_selector.yaml new file mode 100644 index 00000000000..08c8134cb76 --- /dev/null +++ b/hack/testdata/prune/a_selector.yaml @@ -0,0 +1,35 @@ +apiVersion: v1 +kind: Pod +metadata: + name: a + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: b + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: c + namespace: nsbprune + labels: + prune-group: "false" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 diff --git a/hack/testdata/prune/a_selector_prune.yaml b/hack/testdata/prune/a_selector_prune.yaml new file mode 100644 index 00000000000..f957f6aa0a7 --- /dev/null +++ b/hack/testdata/prune/a_selector_prune.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Pod +metadata: + name: a + namespace: nsbprune + labels: + prune-group: "true" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 +--- +apiVersion: v1 +kind: Pod +metadata: + name: c + namespace: nsbprune + labels: + prune-group: "false" +spec: + containers: + - name: kubernetes-pause + image: registry.k8s.io/pause:3.9 \ No newline at end of file diff --git a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go index ef77fac894a..e87d2106f76 100644 --- a/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go +++ b/staging/src/k8s.io/kubectl/pkg/cmd/diff/prune.go @@ -47,7 +47,7 @@ func newPruner(dc dynamic.Interface, m meta.RESTMapper, r []prune.Resource, sele dynamicClient: dc, mapper: m, resources: r, - labelSelector: selector, + //labelSelector: selector, } } diff --git a/test/cmd/diff.sh b/test/cmd/diff.sh index 0e5ae9e92eb..2c75ad91da5 100755 --- a/test/cmd/diff.sh +++ b/test/cmd/diff.sh @@ -114,6 +114,26 @@ run_kubectl_diff_tests() { kubectl delete -f hack/testdata/pod.yaml kubectl delete -f hack/testdata/prune/b.yaml + ## kubectl diff --prune with label selector + kubectl create ns nsbprune + kubectl apply --namespace nsbprune -f hack/testdata/prune/a_selector.yaml + kube::test::get_object_assert 'pods a -n nsbprune' "{{${id_field:?}}}" 'a' + kube::test::get_object_assert 'pods b -n nsbprune' "{{${id_field:?}}}" 'b' + kube::test::get_object_assert 'pods c -n nsbprune' "{{${id_field:?}}}" 'c' + # Make sure that kubectl diff does not return neither pod 'b' nor pod 'c' without prune flag + output_message=$(kubectl diff -l prune-group=true -f hack/testdata/prune/a_selector_prune.yaml) + kube::test::if_has_not_string "${output_message}" "name: b" + kube::test::if_has_not_string "${output_message}" "name: c" + # the exist code for diff is 1 because pod name 'b' is found in the given label selector but not 'c' + output_message=$(kubectl diff --prune -l prune-group=true -f hack/testdata/prune/a_selector_prune.yaml || test $? -eq 1) + # pod 'b' should be in output, it is pruned. On the other hand, 'c' should not be, it's label selector is different + kube::test::if_has_string "${output_message}" 'name: b' + kube::test::if_has_not_string "${output_message}" "name: c" + + # Cleanup + kubectl delete -f hack/testdata/prune/a_selector.yaml + + set +o nounset set +o errexit }