(t *testing.T)
| 1055 | } |
| 1056 | |
| 1057 | func TestFeatureFlagEnable(t *testing.T) { |
| 1058 | tools := []ServerTool{ |
| 1059 | mockTool("always_available", "toolset1", true), |
| 1060 | mockToolWithFlags("needs_flag", "toolset1", true, "my_feature", ""), |
| 1061 | } |
| 1062 | |
| 1063 | // Without feature checker, feature-flag filtering is skipped: both tools pass |
| 1064 | reg := mustBuild(t, NewBuilder().SetTools(tools).WithToolsets([]string{"all"})) |
| 1065 | available := reg.AvailableTools(context.Background()) |
| 1066 | if len(available) != 2 { |
| 1067 | t.Fatalf("Expected 2 tools without feature checker (filtering skipped), got %d", len(available)) |
| 1068 | } |
| 1069 | |
| 1070 | // With feature checker returning false, FeatureFlagEnable tool is excluded |
| 1071 | checkerFalse := func(_ context.Context, _ string) (bool, error) { return false, nil } |
| 1072 | regFalse := mustBuild(t, NewBuilder().SetTools(tools).WithToolsets([]string{"all"}).WithFeatureChecker(checkerFalse)) |
| 1073 | availableFalse := regFalse.AvailableTools(context.Background()) |
| 1074 | if len(availableFalse) != 1 { |
| 1075 | t.Fatalf("Expected 1 tool with false checker, got %d", len(availableFalse)) |
| 1076 | } |
| 1077 | if availableFalse[0].Tool.Name != "always_available" { |
| 1078 | t.Errorf("Expected always_available, got %s", availableFalse[0].Tool.Name) |
| 1079 | } |
| 1080 | |
| 1081 | // With feature checker returning true for "my_feature", tool should be included |
| 1082 | checkerTrue := func(_ context.Context, flag string) (bool, error) { |
| 1083 | return flag == "my_feature", nil |
| 1084 | } |
| 1085 | regTrue := mustBuild(t, NewBuilder().SetTools(tools).WithToolsets([]string{"all"}).WithFeatureChecker(checkerTrue)) |
| 1086 | availableTrue := regTrue.AvailableTools(context.Background()) |
| 1087 | if len(availableTrue) != 2 { |
| 1088 | t.Fatalf("Expected 2 tools with true checker, got %d", len(availableTrue)) |
| 1089 | } |
| 1090 | } |
| 1091 | |
| 1092 | func TestFeatureFlagDisable(t *testing.T) { |
| 1093 | tools := []ServerTool{ |
nothing calls this directly
no test coverage detected