Skip to content

Commit 5f3ea1a

Browse files
committed
Merge remote-tracking branch 'upstream/main' into lsp-client
2 parents 47e3190 + e9bfb9a commit 5f3ea1a

File tree

4 files changed

+21
-37
lines changed

4 files changed

+21
-37
lines changed

plugins/amazonq/chat/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/amazonq/workspace/context/ProjectContextProviderTest.kt

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ class ProjectContextProviderTest {
109109
fun `Lsp endpoint correctness`() {
110110
assertThat(LspMessage.Initialize.endpoint).isEqualTo("initialize")
111111
assertThat(LspMessage.Index.endpoint).isEqualTo("buildIndex")
112+
assertThat(LspMessage.Index.endpoint).isEqualTo("indexFiles")
112113
assertThat(LspMessage.UpdateIndex.endpoint).isEqualTo("updateIndexV2")
113114
assertThat(LspMessage.QueryChat.endpoint).isEqualTo("query")
114115
assertThat(LspMessage.QueryInlineCompletion.endpoint).isEqualTo("queryInlineProjectContext")
@@ -141,29 +142,13 @@ class ProjectContextProviderTest {
141142
)
142143
}
143144

144-
@Test
145-
fun `updateIndex will not send message to lsp if index is not complete`() {
146-
sut.isIndexComplete.set(false)
147-
148-
sut.updateIndex(listOf("foo.java"), ProjectContextProvider.IndexUpdateMode.UPDATE)
149-
150-
assertThat(wireMock.allServeEvents).isEmpty()
151-
wireMock.verify(
152-
0,
153-
postRequestedFor(urlPathEqualTo("/updateIndexV2"))
154-
.withHeader("Content-Type", equalTo("text/plain"))
155-
)
156-
}
157-
158145
@Test
159146
fun `updateIndex should send correct encrypted request to lsp`() {
160-
sut.isIndexComplete.set(true)
161-
162147
sut.updateIndex(listOf("foo.java"), ProjectContextProvider.IndexUpdateMode.UPDATE)
163148
val request = UpdateIndexRequest(listOf("foo.java"), ProjectContextProvider.IndexUpdateMode.UPDATE.value)
164149
val requestJson = mapper.writeValueAsString(request)
165150

166-
assertThat(mapper.readTree(requestJson)).isEqualTo(mapper.readTree("""{ "filePaths": ["foo.java"], "mode": "update" }"""))
151+
assertThat(mapper.readTree(requestJson)).isEqualTo(mapper.readTree("""{ "filePath": "foo.java" }"""))
167152

168153
val encryptedRequest = encoderServer.encrypt(requestJson)
169154

@@ -349,6 +334,7 @@ class ProjectContextProviderTest {
349334
private fun createMockServer() = WireMockRule(wireMockConfig().dynamicPort())
350335
}
351336

337+
// language=JSON
352338
val validQueryInlineResponse = """
353339
[
354340
{
@@ -369,6 +355,7 @@ val validQueryInlineResponse = """
369355
]
370356
""".trimIndent()
371357

358+
// language=JSON
372359
val validQueryChatResponse = """
373360
[
374361
{
@@ -406,9 +393,10 @@ val validQueryChatResponse = """
406393
]
407394
""".trimIndent()
408395

396+
// language=JSON
409397
val validGetUsageResponse = """
410398
{
411-
"memoryUsage":123,
412-
"cpuUsage":456
399+
"memoryUsage":123,
400+
"cpuUsage":456
413401
}
414402
""".trimIndent()

plugins/amazonq/codewhisperer/jetbrains-community/src/software/aws/toolkits/jetbrains/services/codewhisperer/util/CodeWhispererFileCrawler.kt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,19 +84,24 @@ abstract class CodeWhispererFileCrawler : FileCrawler {
8484
}.orEmpty()
8585

8686
override fun listCrossFileCandidate(target: PsiFile): List<VirtualFile> {
87-
val targetFile = target.viewProvider.virtualFile
87+
/**
88+
* [PsiFile.getVirtualFile]
89+
* PsiFile.virtualFile will return the virtual file, or null if the file exists only in memory
90+
* If you want to get a non-null virtual file consider using FileViewProvider. getVirtualFile()
91+
*/
92+
val targetVirtualFile = target.virtualFile ?: target.viewProvider.virtualFile
8893

8994
val openedFiles = runReadAction {
9095
FileEditorManager.getInstance(target.project).openFiles.toList().filter {
91-
it.name != targetFile.name &&
96+
it.name != targetVirtualFile.name &&
9297
isSameDialect(it.extension) &&
9398
!isTestFile(it, target.project)
9499
}
95100
}
96101

97102
val fileToFileDistanceList = runReadAction {
98103
openedFiles.map {
99-
return@map it to CodeWhispererFileCrawler.getFileDistance(fileA = targetFile, fileB = it)
104+
return@map it to CodeWhispererFileCrawler.getFileDistance(fileA = targetVirtualFile, fileB = it)
100105
}
101106
}
102107

plugins/amazonq/codewhisperer/jetbrains-community/tst/software/aws/toolkits/jetbrains/services/codewhisperer/CodeWhispererFileContextProviderTest.kt

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -375,19 +375,6 @@ class CodeWhispererFileContextProviderTest {
375375
)
376376
}
377377

378-
/**
379-
* - src/
380-
* - java/
381-
* - Main.java
382-
* - Util.java
383-
* - controllers/
384-
* -MyApiController.java
385-
* - tst/
386-
* - java/
387-
* - MainTest.java
388-
*
389-
*/
390-
// TODO: fix this test, in test env, psiFile.virtualFile == null @psiGist.getFileData(psiFile) { psiFile -> ... }
391378
@Test
392379
fun `extractSupplementalFileContext from src file should extract src`() = runTest {
393380
val queryPsi = fixture.addFileToProject("Query.java", SampleCase.query)
@@ -418,6 +405,11 @@ class CodeWhispererFileContextProviderTest {
418405
val fileContext = readAction { sut.extractFileContext(fixture.editor, queryPsi) }
419406
val supplementalContext = sut.extractSupplementalFileContext(queryPsi, fileContext, timeout = 50)
420407

408+
assertThat(supplementalContext?.contents)
409+
.isNotNull
410+
.isNotEmpty
411+
.hasSize(3)
412+
421413
assertThat(supplementalContext?.contents)
422414
.isNotNull
423415
.isNotEmpty

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/project/ProjectContextProvider.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import com.fasterxml.jackson.module.kotlin.readValue
1010
import com.intellij.openapi.Disposable
1111
import com.intellij.openapi.project.BaseProjectDirectories.Companion.getBaseDirectories
1212
import com.intellij.openapi.project.Project
13-
import com.intellij.openapi.project.guessProjectDir
1413
import com.intellij.openapi.vfs.VfsUtilCore
1514
import com.intellij.openapi.vfs.VirtualFile
1615
import com.intellij.openapi.vfs.VirtualFileVisitor
@@ -133,7 +132,7 @@ class ProjectContextProvider(val project: Project, private val encoderServer: En
133132
}
134133

135134
fun index(): Boolean {
136-
val projectRoot = project.guessProjectDir()?.path ?: return false
135+
val projectRoot = project.basePath ?: return false
137136

138137
val indexStartTime = System.currentTimeMillis()
139138
val filesResult = collectFiles()

0 commit comments

Comments
 (0)