mirror of
https://github.com/pacnpal/Roo-Code.git
synced 2025-12-20 20:31:37 -05:00
Merge pull request #219 from RooVetGit/update_workspace_tracker
Updated workspace tracker from Cline
This commit is contained in:
@@ -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
|
||||||
}),
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user