Merge pull request #219 from RooVetGit/update_workspace_tracker

Updated workspace tracker from Cline
This commit is contained in:
Matt Rubens
2024-12-26 08:26:40 -08:00
committed by GitHub
2 changed files with 3 additions and 25 deletions

View File

@@ -27,10 +27,8 @@ class WorkspaceTracker {
} }
private registerListeners() { private registerListeners() {
// Create a file system watcher for all files const watcher = vscode.workspace.createFileSystemWatcher("**")
const watcher = vscode.workspace.createFileSystemWatcher('**')
// Listen for file creation
this.disposables.push( this.disposables.push(
watcher.onDidCreate(async (uri) => { watcher.onDidCreate(async (uri) => {
await this.addFilePath(uri.fsPath) await this.addFilePath(uri.fsPath)
@@ -38,7 +36,7 @@ class WorkspaceTracker {
}) })
) )
// Listen for file deletion // Renaming files triggers a delete and create event
this.disposables.push( this.disposables.push(
watcher.onDidDelete(async (uri) => { watcher.onDidDelete(async (uri) => {
if (await this.removeFilePath(uri.fsPath)) { if (await this.removeFilePath(uri.fsPath)) {
@@ -47,15 +45,6 @@ class WorkspaceTracker {
}) })
) )
// Listen for file changes (which could include renames)
this.disposables.push(
watcher.onDidChange(async (uri) => {
await this.addFilePath(uri.fsPath)
this.workspaceDidUpdate()
})
)
// Add the watcher itself to disposables
this.disposables.push(watcher) this.disposables.push(watcher)
} }
@@ -68,7 +57,7 @@ class WorkspaceTracker {
filePaths: Array.from(this.filePaths).map((file) => { filePaths: Array.from(this.filePaths).map((file) => {
const relativePath = path.relative(cwd, file).toPosix() const relativePath = path.relative(cwd, file).toPosix()
return file.endsWith("/") ? relativePath + "/" : relativePath return file.endsWith("/") ? relativePath + "/" : relativePath
}), })
}) })
} }

View File

@@ -12,7 +12,6 @@ const mockDispose = jest.fn()
const mockWatcher = { const mockWatcher = {
onDidCreate: mockOnDidCreate.mockReturnValue({ dispose: mockDispose }), onDidCreate: mockOnDidCreate.mockReturnValue({ dispose: mockDispose }),
onDidDelete: mockOnDidDelete.mockReturnValue({ dispose: mockDispose }), onDidDelete: mockOnDidDelete.mockReturnValue({ dispose: mockDispose }),
onDidChange: mockOnDidChange.mockReturnValue({ dispose: mockDispose }),
dispose: mockDispose dispose: mockDispose
} }
@@ -86,16 +85,6 @@ describe("WorkspaceTracker", () => {
}) })
}) })
it("should handle file change events", async () => {
const [[callback]] = mockOnDidChange.mock.calls
await callback({ fsPath: "/test/workspace/changed.ts" })
expect(mockProvider.postMessageToWebview).toHaveBeenCalledWith({
type: "workspaceUpdated",
filePaths: ["changed.ts"]
})
})
it("should handle directory paths correctly", async () => { it("should handle directory paths correctly", async () => {
// Mock stat to return directory type // Mock stat to return directory type
;(vscode.workspace.fs.stat as jest.Mock).mockResolvedValueOnce({ type: 2 }) // FileType.Directory = 2 ;(vscode.workspace.fs.stat as jest.Mock).mockResolvedValueOnce({ type: 2 }) // FileType.Directory = 2