Skip to content

Commit 2010c90

Browse files
committed
tests
1 parent 2e02eb6 commit 2010c90

File tree

2 files changed

+79
-5
lines changed
  • plugins/amazonq/shared/jetbrains-community
    • src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util
    • tst/software/aws/toolkits/jetbrains/services/amazonq/lsp/util

2 files changed

+79
-5
lines changed

plugins/amazonq/shared/jetbrains-community/src/software/aws/toolkits/jetbrains/services/amazonq/lsp/util/FileUriUtil.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import com.intellij.openapi.vfs.VfsUtil
77
import com.intellij.openapi.vfs.VirtualFile
88
import com.intellij.openapi.vfs.VfsUtilCore
99
import java.net.URI
10+
import java.net.URLEncoder
11+
import java.nio.charset.StandardCharsets
1012

1113
object FileUriUtil {
12-
fun toUri(virtualFile: VirtualFile): URI {
14+
15+
fun toUriString(virtualFile: VirtualFile): String {
1316
val file = VfsUtilCore.virtualToIoFile(virtualFile)
14-
return VfsUtil.toUri(file)
15-
}
17+
return VfsUtil.toUri(file).toString()
1618

17-
fun toUriString(virtualFile: VirtualFile): String =
18-
toUri(virtualFile).toString()
19+
}
1920
}
21+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package software.aws.toolkits.jetbrains.services.amazonq.lsp.util
2+
3+
import com.intellij.openapi.vfs.JarFileSystem
4+
import com.intellij.openapi.vfs.VirtualFile
5+
import com.intellij.openapi.vfs.newvfs.impl.VirtualFileSystemEntry
6+
import com.intellij.rt.coverage.util.ErrorReporter.setPath
7+
import com.intellij.testFramework.LightVirtualFile
8+
import com.intellij.testFramework.fixtures.BasePlatformTestCase
9+
import io.mockk.every
10+
import io.mockk.mockk
11+
import java.io.File
12+
import org.junit.Test
13+
import kotlin.test.assertEquals
14+
15+
class FileUriUtilTest : BasePlatformTestCase() {
16+
17+
private fun createMockVirtualFile(path: String): VirtualFile =
18+
LightVirtualFile(path)
19+
20+
21+
@Test
22+
fun `test basic unix path`() {
23+
val virtualFile = createMockVirtualFile("/path/to/file.txt")
24+
val uri = FileUriUtil.toUriString(virtualFile)
25+
assertEquals("file:///path/to/file.txt", uri)
26+
}
27+
28+
@Test
29+
fun `test path with spaces`() {
30+
val virtualFile = createMockVirtualFile("/path/with spaces/file.txt")
31+
val uri = FileUriUtil.toUriString(virtualFile)
32+
assertEquals("file:///path/with%20spaces/file.txt", uri)
33+
}
34+
35+
@Test
36+
fun `test windows style path`() {
37+
val virtualFile = createMockVirtualFile("C:\\path\\to\\file.txt")
38+
val uri = FileUriUtil.toUriString(virtualFile)
39+
assertEquals("file:///C:/path/to/file.txt", uri)
40+
}
41+
42+
@Test
43+
fun `test root path`() {
44+
val virtualFile = createMockVirtualFile("/")
45+
val uri = FileUriUtil.toUriString(virtualFile)
46+
assertEquals("file:///", uri)
47+
}
48+
49+
@Test
50+
fun `test path with multiple separators`() {
51+
val virtualFile = createMockVirtualFile("/path//to///file.txt")
52+
val uri = FileUriUtil.toUriString(virtualFile)
53+
assertEquals("file:///path/to/file.txt", uri)
54+
}
55+
56+
@Test
57+
fun `test very long path`() {
58+
val longPath = "/a".repeat(256) + "/file.txt"
59+
val virtualFile = createMockVirtualFile(longPath)
60+
val uri = FileUriUtil.toUriString(virtualFile)
61+
assertTrue(uri.startsWith("file:///"))
62+
assertTrue(uri.endsWith("/file.txt"))
63+
}
64+
65+
@Test
66+
fun `test relative path`() {
67+
val virtualFile = createMockVirtualFile("./relative/path/file.txt")
68+
val uri = FileUriUtil.toUriString(virtualFile)
69+
assertTrue(uri.contains("file.txt"))
70+
assertTrue(uri.startsWith("file:///"))
71+
}
72+
}

0 commit comments

Comments
 (0)