From 60da931e0e6bdc4f102ff7440bee240f0f63c01c Mon Sep 17 00:00:00 2001 From: Jan Chaloupka Date: Thu, 18 Dec 2025 16:50:09 +0100 Subject: [PATCH] fix(TestReadyNodesWithNodeSelector): make sure nodeLister.List always returns a non-empty list so the lister is always tested The case of an empty list of nodes from the lister is not easy to catch. This change makes sure one more initial condition is met. --- pkg/descheduler/node/node_test.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/pkg/descheduler/node/node_test.go b/pkg/descheduler/node/node_test.go index a25786722..6b9e93cac 100644 --- a/pkg/descheduler/node/node_test.go +++ b/pkg/descheduler/node/node_test.go @@ -25,6 +25,7 @@ import ( v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/labels" "k8s.io/apimachinery/pkg/runtime" "k8s.io/client-go/informers" "k8s.io/client-go/kubernetes/fake" @@ -79,9 +80,24 @@ func TestReadyNodesWithNodeSelector(t *testing.T) { sharedInformerFactory.WaitForCacheSync(stopChannel) defer close(stopChannel) + // First verify nodeLister returns non-empty list + allNodes, err := nodeLister.List(labels.Everything()) + if err != nil { + t.Fatalf("Failed to list nodes from nodeLister: %v", err) + } + if len(allNodes) == 0 { + t.Fatal("Expected nodeLister to return non-empty list of nodes") + } + if len(allNodes) != 2 { + t.Errorf("Expected nodeLister to return 2 nodes, got %d", len(allNodes)) + } + + // Now test ReadyNodes nodes, _ := ReadyNodes(ctx, fakeClient, nodeLister, nodeSelector) - if nodes[0].Name != "node1" { + if len(nodes) != 1 { + t.Errorf("Expected 1 node, got %d", len(nodes)) + } else if nodes[0].Name != "node1" { t.Errorf("Expected node1, got %s", nodes[0].Name) } }