package guides_test import ( "fmt" "os" "path/filepath" "runtime" "strings" "testing" "go-micro.dev/v6/ai" _ "go-micro.dev/v6/ai/anthropic" _ "go-micro.dev/v6/ai/atlascloud" _ "go-micro.dev/v6/ai/gemini" _ "go-micro.dev/v6/ai/groq" _ "go-micro.dev/v6/ai/minimax" _ "go-micro.dev/v6/ai/mistral" _ "go-micro.dev/v6/ai/ollama" _ "go-micro.dev/v6/ai/openai" _ "go-micro.dev/v6/ai/together" ) func TestAIProviderGuideCapabilityMatrixMatchesRegistry(t *testing.T) { _, filename, _, ok := runtime.Caller(0) if !ok { t.Fatal("runtime.Caller failed") } guidePath := filepath.Join(filepath.Dir(filename), "ai-provider-guide.md") b, err := os.ReadFile(guidePath) if err != nil { t.Fatalf("read AI provider guide: %v", err) } guide := string(b) for _, row := range ai.CapabilityRows() { want := fmt.Sprintf("| `%s` | %s | %s | %s | %s | %s |", row.Provider, yesNo(row.Model), yesNo(row.Image), yesNo(row.Video), yesNo(row.Stream), yesNo(row.ToolStream)) if !strings.Contains(guide, want) { t.Fatalf("AI provider guide capability matrix is stale; missing row %q", want) } } } func yesNo(ok bool) string { if ok { return "Yes" } return "No" }