test: add google gemini to test matrix

Andrey Nering created

Change summary

google/google.go               |  5 +++--
providertests/.env.sample      |  1 +
providertests/builders_test.go | 19 +++++++++++++++++++
3 files changed, 23 insertions(+), 2 deletions(-)

Detailed changes

google/google.go 🔗

@@ -4,6 +4,7 @@ import (
 	"context"
 	"encoding/base64"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"maps"
 	"net/http"
@@ -370,7 +371,7 @@ func (g *languageModel) Generate(ctx context.Context, call ai.Call) (*ai.Respons
 	// if err != nil {
 	// 	return nil, err
 	// }
-	panic("unimplemented")
+	return nil, errors.New("unimplemented")
 }
 
 // Model implements ai.LanguageModel.
@@ -385,7 +386,7 @@ func (g *languageModel) Provider() string {
 
 // Stream implements ai.LanguageModel.
 func (g *languageModel) Stream(context.Context, ai.Call) (ai.StreamResponse, error) {
-	panic("unimplemented")
+	return nil, errors.New("unimplemented")
 }
 
 func toGoogleTools(tools []ai.Tool, toolChoice *ai.ToolChoice) (googleTools []*genai.FunctionDeclaration, googleToolChoice *genai.ToolConfig, warnings []ai.CallWarning) {

providertests/builders_test.go 🔗

@@ -6,6 +6,7 @@ import (
 
 	"github.com/charmbracelet/fantasy/ai"
 	"github.com/charmbracelet/fantasy/anthropic"
+	"github.com/charmbracelet/fantasy/google"
 	"github.com/charmbracelet/fantasy/openai"
 	"gopkg.in/dnaeon/go-vcr.v4/pkg/recorder"
 )
@@ -21,6 +22,8 @@ var languageModelBuilders = []builderPair{
 	{"openai-gpt-4o", builderOpenaiGpt4o},
 	{"openai-gpt-4o-mini", builderOpenaiGpt4oMini},
 	{"anthropic-claude-sonnet", builderAnthropicClaudeSonnet4},
+	{"google-gemini-2.5-flash", builderGoogleGemini25Flash},
+	{"google-gemini-2.5-pro", builderGoogleGemini25Pro},
 }
 
 func builderOpenaiGpt4o(r *recorder.Recorder) (ai.LanguageModel, error) {
@@ -46,3 +49,19 @@ func builderAnthropicClaudeSonnet4(r *recorder.Recorder) (ai.LanguageModel, erro
 	)
 	return provider.LanguageModel("claude-sonnet-4-20250514")
 }
+
+func builderGoogleGemini25Flash(r *recorder.Recorder) (ai.LanguageModel, error) {
+	provider := google.New(
+		google.WithAPIKey(os.Getenv("GEMINI_API_KEY")),
+		google.WithHTTPClient(&http.Client{Transport: r}),
+	)
+	return provider.LanguageModel("gemini-2.5-flash")
+}
+
+func builderGoogleGemini25Pro(r *recorder.Recorder) (ai.LanguageModel, error) {
+	provider := google.New(
+		google.WithAPIKey(os.Getenv("GEMINI_API_KEY")),
+		google.WithHTTPClient(&http.Client{Transport: r}),
+	)
+	return provider.LanguageModel("gemini-2.5-flash")
+}