summaryrefslogtreecommitdiff
path: root/internal/audio/gemini_provider_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/audio/gemini_provider_test.go')
-rw-r--r--internal/audio/gemini_provider_test.go40
1 files changed, 37 insertions, 3 deletions
diff --git a/internal/audio/gemini_provider_test.go b/internal/audio/gemini_provider_test.go
index ff0b2f5..66f0a74 100644
--- a/internal/audio/gemini_provider_test.go
+++ b/internal/audio/gemini_provider_test.go
@@ -219,16 +219,50 @@ func TestWriteGeminiAudioFileWritesWAV(t *testing.T) {
}
}
-func TestWriteGeminiAudioFileRejectsUnsupportedFormats(t *testing.T) {
+func TestWriteGeminiAudioFileWritesMP3ViaFFmpeg(t *testing.T) {
dir := t.TempDir()
outputFile := filepath.Join(dir, "output.mp3")
+ ffmpegScript := filepath.Join(dir, "ffmpeg")
+ script := "#!/bin/sh\nout=\"\"\nfor arg in \"$@\"; do out=\"$arg\"; done\ncat >/dev/null\nprintf 'mp3' > \"$out\"\n"
+ if err := os.WriteFile(ffmpegScript, []byte(script), 0755); err != nil {
+ t.Fatalf("failed to write fake ffmpeg script: %v", err)
+ }
+
+ originalLookPath := execLookPath
+ execLookPath = func(file string) (string, error) {
+ if file == "ffmpeg" {
+ return ffmpegScript, nil
+ }
+ return originalLookPath(file)
+ }
+ t.Cleanup(func() {
+ execLookPath = originalLookPath
+ })
+
+ if err := writeGeminiAudioFile(outputFile, []byte{0x11, 0x22}, "audio/pcm"); err != nil {
+ t.Fatalf("writeGeminiAudioFile() unexpected error: %v", err)
+ }
+
+ fileData, err := os.ReadFile(outputFile)
+ if err != nil {
+ t.Fatalf("ReadFile() unexpected error: %v", err)
+ }
+ if string(fileData) != "mp3" {
+ t.Fatalf("output file = %q, want fake mp3 payload", string(fileData))
+ }
+}
+
+func TestWriteGeminiAudioFileRejectsUnsupportedFormats(t *testing.T) {
+ dir := t.TempDir()
+ outputFile := filepath.Join(dir, "output.flac")
+
err := writeGeminiAudioFile(outputFile, []byte{0x11, 0x22}, "audio/pcm")
if err == nil {
- t.Fatal("writeGeminiAudioFile() expected error for non-wav output")
+ t.Fatal("writeGeminiAudioFile() expected error for unsupported output")
}
- if !strings.Contains(err.Error(), "only supports .wav output files") {
+ if !strings.Contains(err.Error(), "only supports .wav and .mp3 output files") {
t.Fatalf("writeGeminiAudioFile() error = %v, want unsupported-format message", err)
}