diff --git a/src/eslint-suppressions.json b/src/eslint-suppressions.json index 24db0bf433..6ca8a4e134 100644 --- a/src/eslint-suppressions.json +++ b/src/eslint-suppressions.json @@ -1301,7 +1301,7 @@ }, "services/code-index/__tests__/manager.spec.ts": { "@typescript-eslint/no-explicit-any": { - "count": 87 + "count": 84 } }, "services/code-index/__tests__/orchestrator.spec.ts": { diff --git a/src/services/code-index/__tests__/manager.spec.ts b/src/services/code-index/__tests__/manager.spec.ts index 952e205fdd..5038cc247e 100644 --- a/src/services/code-index/__tests__/manager.spec.ts +++ b/src/services/code-index/__tests__/manager.spec.ts @@ -3,6 +3,8 @@ import { makeExtensionContext } from "../../../test-utils/vscode" import { CodeIndexManager } from "../manager" import { CodeIndexManagerRegistry } from "../code-index-manager-registry" import { CodeIndexServiceFactory } from "../service-factory" +import { CodeIndexOrchestrator } from "../orchestrator" +import { CodeIndexSearchService } from "../search-service" import type { MockedClass } from "vitest" import * as path from "path" import { providerIdentifiers } from "@roo-code/types/provider-identifiers" @@ -474,63 +476,19 @@ describe("CodeIndexManager - handleSettingsChange regression", () => { ;(manager as any)._configManager = mockConfigManager }) - it("should validate embedder during _recreateServices when validation succeeds", async () => { - // Arrange - mockServiceFactoryInstance.validateEmbedder.mockResolvedValue({ valid: true }) - - // Act - directly call the private method for testing - await (manager as any)._recreateServices() - - // Assert - expect(mockServiceFactoryInstance.createServices).toHaveBeenCalled() - const createdEmbedder = mockServiceFactoryInstance.createServices.mock.results[0].value.embedder - expect(mockServiceFactoryInstance.validateEmbedder).toHaveBeenCalledWith(createdEmbedder) - expect(mockStateManager.setSystemState).not.toHaveBeenCalledWith("Error", expect.any(String)) - }) - - it("should set error state when embedder validation fails", async () => { - // Arrange + it("should create indexing services without a startup embedder validation request", async () => { mockServiceFactoryInstance.validateEmbedder.mockResolvedValue({ valid: false, - error: "embeddings:validation.authenticationFailed", + error: "Embedder unavailable", }) - // Act & Assert - await expect((manager as any)._recreateServices()).rejects.toThrow( - "embeddings:validation.authenticationFailed", - ) + await manager["_recreateServices"]() - // Assert other expectations expect(mockServiceFactoryInstance.createServices).toHaveBeenCalled() - const createdEmbedder = mockServiceFactoryInstance.createServices.mock.results[0].value.embedder - expect(mockServiceFactoryInstance.validateEmbedder).toHaveBeenCalledWith(createdEmbedder) - expect(mockStateManager.setSystemState).toHaveBeenCalledWith( - "Error", - "embeddings:validation.authenticationFailed", - ) - }) - - it("should set generic error state when embedder validation throws", async () => { - // Arrange - // Since the real service factory catches exceptions, we should mock it to resolve with an error - mockServiceFactoryInstance.validateEmbedder.mockResolvedValue({ - valid: false, - error: "embeddings:validation.configurationError", - }) - - // Act & Assert - await expect((manager as any)._recreateServices()).rejects.toThrow( - "embeddings:validation.configurationError", - ) - - // Assert other expectations - expect(mockServiceFactoryInstance.createServices).toHaveBeenCalled() - const createdEmbedder = mockServiceFactoryInstance.createServices.mock.results[0].value.embedder - expect(mockServiceFactoryInstance.validateEmbedder).toHaveBeenCalledWith(createdEmbedder) - expect(mockStateManager.setSystemState).toHaveBeenCalledWith( - "Error", - "embeddings:validation.configurationError", - ) + expect(mockServiceFactoryInstance.validateEmbedder).not.toHaveBeenCalled() + expect(mockStateManager.setSystemState).not.toHaveBeenCalledWith("Error", expect.any(String)) + expect(manager["_orchestrator"]).toBeInstanceOf(CodeIndexOrchestrator) + expect(manager["_searchService"]).toBeInstanceOf(CodeIndexSearchService) }) it("should handle embedder creation failure", async () => { @@ -684,7 +642,7 @@ describe("CodeIndexManager - handleSettingsChange regression", () => { // Assert - manager should be initialized again expect(manager.isInitialized).toBe(true) expect(mockServiceFactoryInstance.createServices).toHaveBeenCalled() - expect(mockServiceFactoryInstance.validateEmbedder).toHaveBeenCalled() + expect(mockServiceFactoryInstance.validateEmbedder).not.toHaveBeenCalled() }) it("should be safe to call when not in error state (idempotent)", async () => { diff --git a/src/services/code-index/manager.ts b/src/services/code-index/manager.ts index bb186dc105..aa382e2131 100644 --- a/src/services/code-index/manager.ts +++ b/src/services/code-index/manager.ts @@ -416,14 +416,6 @@ export class CodeIndexManager { rooIgnoreController, ) - // Validate embedder configuration before proceeding - const validationResult = await this._serviceFactory.validateEmbedder(embedder) - if (!validationResult.valid) { - const errorMessage = validationResult.error || "Embedder configuration validation failed" - this._stateManager.setSystemState("Error", errorMessage) - throw new Error(errorMessage) - } - // (Re)Initialize orchestrator this._orchestrator = new CodeIndexOrchestrator( this._configManager!,