Skip to content

Commit fb0d738

Browse files
kingsleyadiofacebook-github-bot
authored andcommitted
Integrate new processor API with AbstractCompilerTest
Summary: $title [RFC](https://docs.google.com/document/d/11VEA3WI2e3_GdN-te4Km3X0wCT33hk3cFAylDZ-WcLk/edit?tab=t.0) Reviewed By: zielinskimz Differential Revision: D66712020 fbshipit-source-id: 76dd1cd9356ad8031822b53d768e71bc79985327
1 parent c5df8f9 commit fb0d738

File tree

2 files changed

+48
-17
lines changed

2 files changed

+48
-17
lines changed

litho-compiler-plugin/compiler/src/test/kotlin/com/facebook/litho/AbstractCompilerTest.kt

Lines changed: 44 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,32 +18,63 @@
1818

1919
package com.facebook.litho
2020

21-
import com.tschuchort.compiletesting.CompilationResult
21+
import com.facebook.litho.common.LithoCompilerConfig
22+
import com.facebook.litho.util.testData
23+
import com.tschuchort.compiletesting.JvmCompilationResult
2224
import com.tschuchort.compiletesting.KotlinCompilation
2325
import com.tschuchort.compiletesting.PluginOption
2426
import com.tschuchort.compiletesting.SourceFile
27+
import org.assertj.core.api.Assertions.assertThat
2528
import org.jetbrains.kotlin.compiler.plugin.ExperimentalCompilerApi
2629

2730
abstract class AbstractCompilerTest {
28-
companion object {
29-
@JvmField val PLUGIN_ENABLED = PluginOption("com.facebook.litho.compiler", "enabled", "true")
30-
}
31+
private val processor = LithoCommandLineProcessor()
3132

3233
fun compile(
33-
code: SourceFile,
34-
options: List<PluginOption> = listOf(PLUGIN_ENABLED),
34+
vararg code: SourceFile,
35+
options: List<PluginOption> = listOf(LithoCompilerConfig.ENABLED.asOption("true")),
3536
useK2: Boolean = false
36-
): CompilationResult {
37+
): JvmCompilationResult {
3738
val compilation =
38-
KotlinCompilation().apply {
39-
sources = listOf(code)
39+
newCompilation(useK2) {
40+
sources = code.asList()
4041
compilerPluginRegistrars = listOf(LithoComponentRegistrar())
41-
commandLineProcessors = listOf(LithoCommandLineProcessor())
4242
pluginOptions = options
43-
inheritClassPath = true
44-
languageVersion = if (useK2) "2.0" else "1.9"
45-
supportsK2 = useK2
4643
}
4744
return compilation.compile()
4845
}
46+
47+
fun runTest(
48+
path: String,
49+
options: List<PluginOption> = listOf(LithoCompilerConfig.ENABLED.asOption("true")),
50+
useK2: Boolean = false
51+
) {
52+
val testData = testData(path)
53+
val compilation =
54+
newCompilation(useK2) {
55+
sources = testData.sourceFiles
56+
compilerPluginRegistrars =
57+
listOf(LithoComponentRegistrar(), TestComponentRegistrar(testData.processor))
58+
pluginOptions = options
59+
}
60+
val compilationResult = compilation.compile()
61+
val processorActualResult = testData.processor.getProcessorResult()
62+
val compilerActualResult = testData.processor.extractCompilerResult(compilationResult)
63+
assertThat(processorActualResult).isEqualTo(testData.processorExpectedOutput)
64+
assertThat(compilerActualResult).isEqualTo(testData.compilerExpectedOutput)
65+
}
66+
67+
fun LithoCompilerConfig<*>.asOption(value: String): PluginOption {
68+
return PluginOption(processor.pluginId, cliOption.optionName, value)
69+
}
70+
71+
private inline fun newCompilation(useK2: Boolean, configure: KotlinCompilation.() -> Unit) =
72+
KotlinCompilation().apply {
73+
configure()
74+
verbose = false
75+
commandLineProcessors = listOf(processor)
76+
inheritClassPath = true
77+
languageVersion = if (useK2) "2.0" else "1.9"
78+
supportsK2 = useK2
79+
}
4980
}

litho-compiler-plugin/compiler/src/test/kotlin/com/facebook/litho/LithoFileVisitorTest.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@
1616

1717
package com.facebook.litho
1818

19+
import com.facebook.litho.common.LithoCompilerConfig
1920
import com.tschuchort.compiletesting.CompilationResult
2021
import com.tschuchort.compiletesting.KotlinCompilation
21-
import com.tschuchort.compiletesting.PluginOption
2222
import com.tschuchort.compiletesting.SourceFile
2323
import org.assertj.core.api.Assertions.assertThat
2424
import org.intellij.lang.annotations.Language
@@ -61,10 +61,10 @@ class LithoFileVisitorTest : AbstractCompilerTest() {
6161

6262
private fun compile(@Language("kotlin") source: String): CompilationResult {
6363
return compile(
64-
code = SourceFile.kotlin("Test.kt", source),
64+
SourceFile.kotlin("Test.kt", source),
6565
options =
6666
listOf(
67-
PLUGIN_ENABLED,
68-
PluginOption("com.facebook.litho.compiler", "internal.debug", "true")))
67+
LithoCompilerConfig.ENABLED.asOption("true"),
68+
LithoCompilerConfig.DEBUG.asOption("true")))
6969
}
7070
}

0 commit comments

Comments
 (0)