//go:build monterey_compat package services import ( "strings" "testing" "voicesnap/internal/config" "voicesnap/internal/language" "voicesnap/internal/model" "voicesnap/internal/modelselection" ) func TestQwen3ASRVisibleButDisabledInMontereyCompatBuild(t *testing.T) { cfg := config.Default() cfg.LanguageMode = config.LanguageModeManual cfg.LanguageID = model.DefaultLanguageID service := NewEngineService(cfg) profile, err := model.GetModelProfile(model.Qwen3ASRModelID) if err != nil { t.Fatal(err) } status := service.modelStatusMap(profile, modelselection.CurrentModel{ ModelID: model.DefaultModelID, Profile: model.DefaultModelProfile(), SelectionMode: config.ModelSelectionModeAuto, LanguageSettings: language.Resolve(config.LanguageModeManual, model.DefaultLanguageID, nil), }) if got := status["modelID"]; got != model.Qwen3ASRModelID { t.Fatalf("modelID = %v, want %s", got, model.Qwen3ASRModelID) } if got := status["supportedInBuild"]; got != false { t.Fatalf("supportedInBuild = %v, want false", got) } if got := status["unsupportedReason"]; got != model.UnsupportedReasonRequiresMacOS14 { t.Fatalf("unsupportedReason = %v, want %s", got, model.UnsupportedReasonRequiresMacOS14) } if _, err := service.allowedModelProfile(model.Qwen3ASRModelID); err == nil { t.Fatal("expected qwen3-asr to be rejected in Monterey compatibility build") } else if !strings.Contains(err.Error(), "macOS 14") { t.Fatalf("error = %q, want macOS 14 reason", err.Error()) } }