From ce11b901a5aaba83d9a478945a71c66a291d83b6 Mon Sep 17 00:00:00 2001 From: David Ahmann Date: Thu, 26 Feb 2026 07:11:07 -0500 Subject: [PATCH] inventory: enforce deterministic default+custom toolset ordering (#2104) --- pkg/inventory/registry_test.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pkg/inventory/registry_test.go b/pkg/inventory/registry_test.go index 207e65dba..19e8e16d3 100644 --- a/pkg/inventory/registry_test.go +++ b/pkg/inventory/registry_test.go @@ -180,6 +180,27 @@ func TestWithToolsets(t *testing.T) { } } +func TestWithToolsets_DefaultAndCustomOrderIsDeterministic(t *testing.T) { + tools := []ServerTool{ + mockToolWithDefault("tool-alpha", "alpha", true, true), + mockToolWithDefault("tool-beta", "beta", true, true), + mockToolWithDefault("tool-gamma", "gamma", true, false), + } + + reg := mustBuild(t, NewBuilder(). + SetTools(tools). + WithToolsets([]string{"gamma", "default", "gamma"})) + + enabledIDs := reg.EnabledToolsetIDs() + require.Equal(t, []ToolsetID{"alpha", "beta", "gamma"}, enabledIDs) + + available := reg.AvailableTools(context.Background()) + require.Len(t, available, 3) + require.Equal(t, "tool-alpha", available[0].Tool.Name) + require.Equal(t, "tool-beta", available[1].Tool.Name) + require.Equal(t, "tool-gamma", available[2].Tool.Name) +} + func TestWithToolsetsTrimsWhitespace(t *testing.T) { tools := []ServerTool{ mockTool("tool1", "toolset1", true),