summaryrefslogtreecommitdiff
path: root/internal/processor/processor_test.go
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-02 17:46:07 +0300
committerPaul Buetow <paul@buetow.org>2026-04-02 17:46:07 +0300
commitf3d057fec20aeef584cb6340c6a002280a019f15 (patch)
tree018be28f954243414969e8b8970fb3f3be8da112 /internal/processor/processor_test.go
parent1fc2ade33b72dd299fc987943ddd09dee7c609ad (diff)
task 002: restore Gemini warning output
Diffstat (limited to 'internal/processor/processor_test.go')
-rw-r--r--internal/processor/processor_test.go50
1 files changed, 46 insertions, 4 deletions
diff --git a/internal/processor/processor_test.go b/internal/processor/processor_test.go
index 9f59bac..dcb8e06 100644
--- a/internal/processor/processor_test.go
+++ b/internal/processor/processor_test.go
@@ -1,6 +1,7 @@
package processor
import (
+ "bytes"
"context"
"errors"
"fmt"
@@ -100,6 +101,39 @@ func (f *fakeAudioProvider) IsAvailable() error {
return nil
}
+func captureStdout(t *testing.T, fn func()) (output string) {
+ t.Helper()
+
+ originalStdout := os.Stdout
+ reader, writer, err := os.Pipe()
+ if err != nil {
+ t.Fatalf("failed to create stdout pipe: %v", err)
+ }
+
+ os.Stdout = writer
+ outputCh := make(chan string, 1)
+ defer func() {
+ os.Stdout = originalStdout
+ if err := writer.Close(); err != nil {
+ t.Fatalf("failed to close stdout pipe: %v", err)
+ }
+ output = <-outputCh
+ if err := reader.Close(); err != nil {
+ t.Fatalf("failed to close stdout reader: %v", err)
+ }
+ }()
+
+ go func() {
+ var buf bytes.Buffer
+ _, _ = io.Copy(&buf, reader)
+ outputCh <- buf.String()
+ }()
+
+ fn()
+
+ return output
+}
+
func TestNewProcessor(t *testing.T) {
t.Setenv("OPENAI_API_KEY", "test-openai-key")
t.Setenv("GOOGLE_API_KEY", "test-google-key")
@@ -712,10 +746,18 @@ func TestGenerateGeminiAudioWithFallbacksRetriesAlternateVoice(t *testing.T) {
flags.AudioProvider = "gemini"
p := NewProcessor(flags)
- if _, err := audio.RunWithVoiceFallbacks("Charon", func(voice string) error {
- return p.generateAudioWithVoice("ябълка", voice)
- }); err != nil {
- t.Fatalf("RunWithVoiceFallbacks() unexpected error: %v", err)
+ p.randomIntn = func(int) int { return 0 }
+ output := captureStdout(t, func() {
+ if err := p.generateAudio("ябълка"); err != nil {
+ t.Fatalf("generateAudio() unexpected error: %v", err)
+ }
+ })
+
+ if !strings.Contains(output, " Warning: Gemini returned no audio for voice Charon") {
+ t.Fatalf("stdout missing indented Gemini warning: %q", output)
+ }
+ if !strings.Contains(output, " Retrying Gemini audio with voice: Kore") {
+ t.Fatalf("stdout missing retry message: %q", output)
}
if got, want := strings.Join(attemptedVoices, ","), "Charon,Kore"; got != want {