fix: tests in ci
This commit is contained in:
@@ -12,6 +12,7 @@ Press a toggle key, speak, and get instant text input. Built natively for Waylan
|
|||||||
- Toggle workflow with optional status notifications and cancel support.
|
- Toggle workflow with optional status notifications and cancel support.
|
||||||
- Text injection via ydotool, wtype, and clipboard fallback with clipboard restore.
|
- Text injection via ydotool, wtype, and clipboard fallback with clipboard restore.
|
||||||
- Guided onboarding and a full configure menu with hot-reload.
|
- Guided onboarding and a full configure menu with hot-reload.
|
||||||
|
- Personalization through custom prompt and keywords sent both to LLM and to voice model.
|
||||||
|
|
||||||
## Voice Providers and Models
|
## Voice Providers and Models
|
||||||
|
|
||||||
|
|||||||
@@ -36,17 +36,17 @@ func (a *WhisperCppAdapter) Transcribe(ctx context.Context, audioData []byte) (s
|
|||||||
return "", nil
|
return "", nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check model file exists
|
||||||
|
if _, err := os.Stat(a.modelPath); os.IsNotExist(err) {
|
||||||
|
return "", fmt.Errorf("model file not found: %s", a.modelPath)
|
||||||
|
}
|
||||||
|
|
||||||
// check whisper-cli exists
|
// check whisper-cli exists
|
||||||
whisperPath, err := exec.LookPath("whisper-cli")
|
whisperPath, err := exec.LookPath("whisper-cli")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("whisper-cli not found: install whisper.cpp first")
|
return "", fmt.Errorf("whisper-cli not found: install whisper.cpp first")
|
||||||
}
|
}
|
||||||
|
|
||||||
// check model file exists
|
|
||||||
if _, err := os.Stat(a.modelPath); os.IsNotExist(err) {
|
|
||||||
return "", fmt.Errorf("model file not found: %s", a.modelPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
// convert raw PCM to WAV
|
// convert raw PCM to WAV
|
||||||
wavData, err := convertToWAV(audioData)
|
wavData, err := convertToWAV(audioData)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package transcriber
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"testing"
|
"testing"
|
||||||
)
|
)
|
||||||
@@ -38,6 +39,29 @@ func TestWhisperCppAdapter_MissingModel(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestWhisperCppAdapter_MissingCli(t *testing.T) {
|
||||||
|
if _, err := exec.LookPath("whisper-cli"); err == nil {
|
||||||
|
t.Skip("whisper-cli is installed")
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpDir := t.TempDir()
|
||||||
|
modelPath := filepath.Join(tmpDir, "model.bin")
|
||||||
|
if err := os.WriteFile(modelPath, []byte("fake"), 0600); err != nil {
|
||||||
|
t.Fatalf("failed to create model: %v", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
adapter := NewWhisperCppAdapter(modelPath, "en", 4)
|
||||||
|
audioData := make([]byte, 32000)
|
||||||
|
|
||||||
|
_, err := adapter.Transcribe(context.Background(), audioData)
|
||||||
|
if err == nil {
|
||||||
|
t.Error("expected error for missing whisper-cli")
|
||||||
|
}
|
||||||
|
if err != nil && !contains(err.Error(), "whisper-cli not found") {
|
||||||
|
t.Errorf("expected 'whisper-cli not found' error, got: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestWhisperCppAdapter_LanguageConversion(t *testing.T) {
|
func TestWhisperCppAdapter_LanguageConversion(t *testing.T) {
|
||||||
// verify adapter stores language for later conversion
|
// verify adapter stores language for later conversion
|
||||||
adapter := NewWhisperCppAdapter("/fake/model.bin", "", 4)
|
adapter := NewWhisperCppAdapter("/fake/model.bin", "", 4)
|
||||||
|
|||||||
Reference in New Issue
Block a user