Skip to content

Commit 764905c

Browse files
authored
test(amazonq) fix broken FileContextProvider test (#4989)
1 parent 6955ef9 commit 764905c

File tree

2 files changed

+49
-22
lines changed

2 files changed

+49
-22
lines changed

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.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 != target.virtualFile.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: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
package software.aws.toolkits.jetbrains.services.codewhisperer
55

6+
import com.intellij.openapi.application.readAction
67
import com.intellij.openapi.project.Project
78
import com.intellij.openapi.vfs.VirtualFile
89
import com.intellij.psi.PsiFile
@@ -13,7 +14,6 @@ import com.intellij.testFramework.runInEdtAndWait
1314
import kotlinx.coroutines.test.runTest
1415
import org.assertj.core.api.Assertions.assertThat
1516
import org.junit.Before
16-
import org.junit.Ignore
1717
import org.junit.Rule
1818
import org.junit.Test
1919
import org.mockito.kotlin.any
@@ -237,29 +237,51 @@ class CodeWhispererFileContextProviderTest {
237237
)
238238
}
239239

240-
/**
241-
* - src/
242-
* - java/
243-
* - Main.java
244-
* - Util.java
245-
* - controllers/
246-
* -MyApiController.java
247-
* - tst/
248-
* - java/
249-
* - MainTest.java
250-
*
251-
*/
252-
// TODO: fix this test, in test env, psiFile.virtualFile == null @psiGist.getFileData(psiFile) { psiFile -> ... }
253-
@Ignore
254240
@Test
255241
fun `extractSupplementalFileContext from src file should extract src`() = runTest {
256-
val psiFiles = setupFixture(fixture)
242+
val file1 = "Human machine interface for lab abc computer applications"
243+
val file2 = "A survey of user opinion of computer system response time"
244+
val file3 = "The EPS user interface management system"
245+
val file4 = "System and human system engineering testing of EPS"
246+
val file5 = "Relation of user perceived response time to error measurement"
247+
val file6 = "The generation of random binary unordered trees"
248+
val file7 = "The intersection graph of paths in trees"
249+
val file8 = "Graph minors IV Widths of trees and well quasi ordering"
250+
val file9 = "Graph minors A survey"
251+
val query = "The intersection of graph survey and trees"
252+
253+
val queryPsi = fixture.addFileToProject("Query.java", query)
254+
val file1Psi = fixture.addFileToProject("File1.java", file1)
255+
val file2Psi = fixture.addFileToProject("File2.java", file2)
256+
val file3Psi = fixture.addFileToProject("File3.java", file3)
257+
val file4Psi = fixture.addFileToProject("File4.java", file4)
258+
val file5Psi = fixture.addFileToProject("File5.java", file5)
259+
val file6Psi = fixture.addFileToProject("File6.java", file6)
260+
val file7Psi = fixture.addFileToProject("File7.java", file7)
261+
val file8Psi = fixture.addFileToProject("File8.java", file8)
262+
val file9Psi = fixture.addFileToProject("File9.java", file9)
263+
264+
runInEdtAndWait {
265+
fixture.openFileInEditor(file1Psi.viewProvider.virtualFile)
266+
fixture.openFileInEditor(file2Psi.viewProvider.virtualFile)
267+
fixture.openFileInEditor(file3Psi.viewProvider.virtualFile)
268+
fixture.openFileInEditor(file4Psi.viewProvider.virtualFile)
269+
fixture.openFileInEditor(file5Psi.viewProvider.virtualFile)
270+
fixture.openFileInEditor(file6Psi.viewProvider.virtualFile)
271+
fixture.openFileInEditor(file7Psi.viewProvider.virtualFile)
272+
fixture.openFileInEditor(file8Psi.viewProvider.virtualFile)
273+
fixture.openFileInEditor(file9Psi.viewProvider.virtualFile)
274+
}
275+
257276
sut = spy(sut)
258277

259-
val fileContext = sut.extractFileContext(fixture.editor, psiFiles[0])
278+
val fileContext = readAction { sut.extractFileContext(fixture.editor, queryPsi) }
279+
val supplementalContext = sut.extractSupplementalFileContext(queryPsi, fileContext, timeout = 50)
260280

261-
val supplementalContext = sut.extractSupplementalFileContext(psiFiles[0], fileContext, timeout = 50)
262-
assertThat(supplementalContext?.contents).isNotNull.isNotEmpty
281+
assertThat(supplementalContext?.contents)
282+
.isNotNull
283+
.isNotEmpty
284+
.hasSize(3)
263285

264286
verify(sut).extractSupplementalFileContextForSrc(any(), any())
265287
verify(sut, times(0)).extractSupplementalFileContextForTst(any(), any())

0 commit comments

Comments
 (0)