diff --git a/internal/config/uploads_local_test.go b/internal/config/uploads_local_test.go index f7adccd..af6a0ba 100644 --- a/internal/config/uploads_local_test.go +++ b/internal/config/uploads_local_test.go @@ -1,6 +1,9 @@ package config -import "testing" +import ( + "testing" + "time" +) // What counts as a LOCAL model alias, and where that is demanded (ADR-034, ADR-035 review). // A private transcript may be sent to a local model and to nothing else; the check is a @@ -72,3 +75,27 @@ func TestLoad_ALocalUploadChatModelIsAccepted(t *testing.T) { t.Errorf("UploadChatModel = %q", cfg.UploadChatModel) } } + +func TestLoad_TheEngineTimeoutDefaultsToTwentyFiveMinutesAndMustBePositive(t *testing.T) { + clearUploadEnv(t) + cfg, err := Load() + if err != nil { + t.Fatalf("Load: %v", err) + } + if cfg.TranscribeEngineTimeout != 25*time.Minute { + t.Errorf("TranscribeEngineTimeout = %v, want 25m: a 90-minute recording takes about 8 minutes on kb-whisper", cfg.TranscribeEngineTimeout) + } + + setEnv(t, map[string]string{"TAPIR_TRANSCRIBE_ENGINE_TIMEOUT": "7m"}) + cfg, err = Load() + if err != nil || cfg.TranscribeEngineTimeout != 7*time.Minute { + t.Errorf("override: %v, %v", cfg.TranscribeEngineTimeout, err) + } + + for _, bad := range []string{"0", "-1m", "soon"} { + setEnv(t, map[string]string{"TAPIR_TRANSCRIBE_ENGINE_TIMEOUT": bad}) + if _, err := Load(); err == nil { + t.Errorf("Load accepted TAPIR_TRANSCRIBE_ENGINE_TIMEOUT=%q", bad) + } + } +}