@@ -45,17 +45,21 @@ import java.io.File
4545import java.io.FileInputStream
4646import java.util.Base64
4747import java.util.UUID
48+ import java.util.zip.ZipFile
4849import kotlin.io.path.relativeTo
4950import kotlin.test.assertNotNull
5051
5152class CodeWhispererCodeFileScanTest : CodeWhispererCodeScanTestBase (PythonCodeInsightTestFixtureRule ()) {
5253 private lateinit var psifile: PsiFile
5354 private lateinit var psifile2: PsiFile
5455 private lateinit var psifile3: PsiFile
56+ private lateinit var psifile4: PsiFile
5557 private lateinit var file: File
5658 private lateinit var file2: File
5759 private lateinit var file3: File
60+ private lateinit var file4: File
5861 private lateinit var virtualFile3: VirtualFile
62+ private lateinit var virtualFile4: VirtualFile
5963 private lateinit var sessionConfigSpy: CodeScanSessionConfig
6064 private lateinit var sessionConfigSpy2: CodeScanSessionConfig
6165 private val payloadContext = PayloadContext (CodewhispererLanguage .Python , 1 , 1 , 10 , listOf (), 600 , 200 )
@@ -111,6 +115,22 @@ class CodeWhispererCodeFileScanTest : CodeWhispererCodeScanTestBase(PythonCodeIn
111115 virtualFile3 = psifile3.virtualFile
112116 file3 = virtualFile3.toNioPath().toFile()
113117
118+ psifile4 = projectRule.fixture.addFileToProject(
119+ " ../test.java" ,
120+ """
121+ public class Addition {
122+ public static void main(String[] args) {
123+ int a = 1;
124+ int b = 2;
125+ int c = a + b;
126+ System.out.println(c);
127+ }
128+ }
129+ """
130+ )
131+ virtualFile4 = psifile4.virtualFile
132+ file4 = virtualFile4.toNioPath().toFile()
133+
114134 sessionConfigSpy = spy(
115135 CodeScanSessionConfig .create(
116136 psifile.virtualFile,
@@ -121,7 +141,7 @@ class CodeWhispererCodeFileScanTest : CodeWhispererCodeScanTestBase(PythonCodeIn
121141
122142 sessionConfigSpy2 = spy(
123143 CodeScanSessionConfig .create(
124- virtualFile3 ,
144+ virtualFile4 ,
125145 project,
126146 CodeWhispererConstants .CodeAnalysisScope .FILE
127147 )
@@ -209,6 +229,16 @@ class CodeWhispererCodeFileScanTest : CodeWhispererCodeScanTestBase(PythonCodeIn
209229 inOrder.verify(codeScanSessionSpy, Times (1 )).listCodeScanFindings(eq(" jobId" ), eq(null ))
210230 }
211231
232+ @Test
233+ fun `test createPayload for files outside Project Root` () {
234+ val payload = sessionConfigSpy2.createPayload()
235+ assertNotNull(payload)
236+ val payloadZipFile = ZipFile (payload.srcZip)
237+ for (entry in payloadZipFile.entries()) {
238+ assertThat(! entry.name.startsWith(" .." ))
239+ }
240+ }
241+
212242 @Test
213243 fun `unsupported languages file scan fail` () {
214244 scanManagerSpy = Mockito .spy(CodeWhispererCodeScanManager .getInstance(projectRule.project))
0 commit comments