diff --git a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt index 25fee69adc6..1cba809683d 100644 --- a/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt +++ b/plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandler.kt @@ -128,13 +128,12 @@ class WorkspaceServiceHandler( val validRenames = events .filter { it.propertyName == VirtualFile.PROP_NAME } .mapNotNull { event -> - val file = event.file.takeIf { shouldHandleFile(it) } ?: return@mapNotNull null - if (event.newValue !is String) return@mapNotNull null + val renamedFile = event.file.takeIf { shouldHandleFile(it) } ?: return@mapNotNull null + val oldFileName = event.oldValue as? String ?: return@mapNotNull null + val parentFile = renamedFile.parent ?: return@mapNotNull null - // Construct old and new URIs - val parentFile = file.parent ?: return@mapNotNull null - val oldUri = toUriString(parentFile) - val newUri = toUriString(file) + val oldUri = toUriString(parentFile)?.let { parentUri -> "$parentUri/$oldFileName" } + val newUri = toUriString(renamedFile) FileRename().apply { this.oldUri = oldUri diff --git a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandlerTest.kt b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandlerTest.kt index d12527ff790..0435a5c167d 100644 --- a/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandlerTest.kt +++ b/plugins/amazonq/shared/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/workspace/WorkspaceServiceHandlerTest.kt @@ -393,8 +393,8 @@ class WorkspaceServiceHandlerTest { val paramsSlot = slot() verify { mockWorkspaceService.didRenameFiles(capture(paramsSlot)) } with(paramsSlot.captured.files[0]) { - assertEquals(normalizeFileUri("file:///test/$oldName"), oldUri) - assertEquals(normalizeFileUri("file:///test/$newName"), newUri) + assertEquals(normalizeFileUri("file:///testDir/$oldName"), oldUri) + assertEquals(normalizeFileUri("file:///testDir/$newName"), newUri) } } @@ -430,8 +430,8 @@ class WorkspaceServiceHandlerTest { val paramsSlot = slot() verify { mockWorkspaceService.didRenameFiles(capture(paramsSlot)) } with(paramsSlot.captured.files[0]) { - assertEquals(normalizeFileUri("file:///test/oldDir"), oldUri) - assertEquals(normalizeFileUri("file:///test/newDir"), newUri) + assertEquals(normalizeFileUri("file:///testDir/oldDir"), oldUri) + assertEquals(normalizeFileUri("file:///testDir/newDir"), newUri) } } @@ -648,10 +648,10 @@ class WorkspaceServiceHandlerTest { newName: String, isDirectory: Boolean = false, ): VFilePropertyChangeEvent { - val oldUri = URI("file:///test/$oldName") - val newUri = URI("file:///test/$newName") + val parent = createMockVirtualFile(URI("file:///testDir/"), "testDir", true) + val newUri = URI("file:///testDir/$newName") val file = createMockVirtualFile(newUri, newName, isDirectory) - every { file.parent } returns createMockVirtualFile(oldUri, oldName, isDirectory) + every { file.parent } returns parent return mockk().apply { every { propertyName } returns VirtualFile.PROP_NAME