MCPcopy
hub / github.com/github/github-mcp-server / TestFeatureFlagEnable

Function TestFeatureFlagEnable

pkg/inventory/registry_test.go:1057–1090  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

1055}
1056
1057func 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
1092func TestFeatureFlagDisable(t *testing.T) {
1093 tools := []ServerTool{

Callers

nothing calls this directly

Calls 8

mockToolWithFlagsFunction · 0.85
mustBuildFunction · 0.85
NewBuilderFunction · 0.85
WithToolsetsMethod · 0.80
SetToolsMethod · 0.80
AvailableToolsMethod · 0.80
WithFeatureCheckerMethod · 0.80
mockToolFunction · 0.70

Tested by

no test coverage detected