aboutsummaryrefslogtreecommitdiff
path: root/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt
diff options
context:
space:
mode:
Diffstat (limited to 'common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt')
-rw-r--r--common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt128
1 files changed, 128 insertions, 0 deletions
diff --git a/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt b/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt
new file mode 100644
index 00000000..cd958f97
--- /dev/null
+++ b/common-util/src/test/kotlin/com/google/devtools/ksp/processing/impl/CodeGeneratorImplTest.kt
@@ -0,0 +1,128 @@
+package com.google.devtools.ksp.processing.impl
+
+import com.google.devtools.ksp.AnyChanges
+import com.google.devtools.ksp.processing.Dependencies
+import org.junit.Assert
+import org.junit.Before
+import org.junit.Test
+import java.io.File
+import java.nio.file.Files
+
+class CodeGeneratorImplTest {
+
+ lateinit var codeGenerator: CodeGeneratorImpl
+ lateinit var baseDir: File
+
+ @Before
+ fun setup() {
+ baseDir = Files.createTempDirectory("project").toFile()
+ val classesDir = File(baseDir, "classes")
+ classesDir.mkdir()
+ val javaDir = File(baseDir, "java")
+ javaDir.mkdir()
+ val kotlinDir = File(baseDir, "kotlin")
+ kotlinDir.mkdir()
+ val resourcesDir = File(baseDir, "resources")
+ resourcesDir.mkdir()
+ codeGenerator = CodeGeneratorImpl(
+ classesDir,
+ javaDir,
+ kotlinDir,
+ resourcesDir,
+ baseDir,
+ AnyChanges(baseDir),
+ emptyList(),
+ true
+ )
+ }
+
+ @Test
+ fun testCreatingAFile() {
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "java")
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "kt")
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "class")
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a.b.c", "Test", "")
+
+ val files = codeGenerator.generatedFile.toList()
+ Assert.assertEquals(File(baseDir, "java/a/b/c/Test.java"), files[0])
+ Assert.assertEquals(File(baseDir, "kotlin/a/b/c/Test.kt"), files[1])
+ Assert.assertEquals(File(baseDir, "classes/a/b/c/Test.class"), files[2])
+ Assert.assertEquals(File(baseDir, "resources/a/b/c/Test"), files[3])
+
+ try {
+ codeGenerator.outputs
+ } catch (e: Exception) {
+ Assert.fail("Failed to get outputs: ${e.message}")
+ }
+ }
+
+ @Test
+ fun testCreatingAFileWithSlash() {
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "java")
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "kt")
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "class")
+ codeGenerator.createNewFile(Dependencies.ALL_FILES, "a/b/c", "Test", "")
+
+ val files = codeGenerator.generatedFile.toList()
+ Assert.assertEquals(File(baseDir, "java/a/b/c/Test.java"), files[0])
+ Assert.assertEquals(File(baseDir, "kotlin/a/b/c/Test.kt"), files[1])
+ Assert.assertEquals(File(baseDir, "classes/a/b/c/Test.class"), files[2])
+ Assert.assertEquals(File(baseDir, "resources/a/b/c/Test"), files[3])
+
+ try {
+ codeGenerator.outputs
+ } catch (e: Exception) {
+ Assert.fail("Failed to get outputs: ${e.message}")
+ }
+ }
+
+ @Test
+ fun testCreatingAFileWithPath() {
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test", "java")
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test")
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test", "class")
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/Test", "")
+
+ val files = codeGenerator.generatedFile.toList()
+ Assert.assertEquals(File(baseDir, "java/a/b/c/Test.java"), files[0])
+ Assert.assertEquals(File(baseDir, "kotlin/a/b/c/Test.kt"), files[1])
+ Assert.assertEquals(File(baseDir, "classes/a/b/c/Test.class"), files[2])
+ Assert.assertEquals(File(baseDir, "resources/a/b/c/Test"), files[3])
+
+ try {
+ codeGenerator.outputs
+ } catch (e: Exception) {
+ Assert.fail("Failed to get outputs: ${e.message}")
+ }
+ }
+
+ @Test
+ fun testCreatingAFileWithPathAndDots() {
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test", "java")
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test")
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test", "class")
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "a/b/c/dir.with.dot/Test", "")
+
+ val files = codeGenerator.generatedFile.toList()
+ Assert.assertEquals(File(baseDir, "java/a/b/c/dir.with.dot/Test.java"), files[0])
+ Assert.assertEquals(File(baseDir, "kotlin/a/b/c/dir.with.dot/Test.kt"), files[1])
+ Assert.assertEquals(File(baseDir, "classes/a/b/c/dir.with.dot/Test.class"), files[2])
+ Assert.assertEquals(File(baseDir, "resources/a/b/c/dir.with.dot/Test"), files[3])
+
+ try {
+ codeGenerator.outputs
+ } catch (e: Exception) {
+ Assert.fail("Failed to get outputs: ${e.message}")
+ }
+ }
+
+ @Test
+ fun testCreatingAFileByPathWithInvalidPath() {
+ try {
+ codeGenerator.createNewFileByPath(Dependencies.ALL_FILES, "../../b/c/Test", "java")
+ Assert.fail()
+ } catch (e: java.lang.IllegalStateException) {
+ Assert.assertEquals(e.message, "requested path is outside the bounds of the required directory")
+ }
+ }
+}