blob: cd1dfa68074dbd6e73ff25a0e9384a17acdba42d [file] [log] [blame] [edit]
/*
* * Copyright 2022 Google LLC. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package kapt
import com.google.testing.compile.Compilation
import com.google.testing.compile.CompilationSubject.assertThat
import com.google.testing.compile.Compiler.javac
import com.google.testing.compile.JavaFileObjects
import javax.tools.JavaFileObject
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runners.JUnit4
/** Sample test for [AP] that uses `com.google.testing.compile` (b/199411692). */
@RunWith(JUnit4::class)
class APTest {
@Test
fun testKTest() {
// This is the stub file kapt generates for KTest.kt as of kotlinc 1.5.31, with the original
// Kotlin module name shortened.
// Alternatively our test could run kapt to get a fresh stub file, but on the other hand we
// can test with a particular stub file this way, which may be useful for some regression tests.
val testStub = JavaFileObjects.forSourceString(
/* fullyQualifiedName= */ "kapt.KTest",
"""
|package kapt;
|import java.lang.System;
|@kotlin.Metadata(mv = {1, 5, 1}, k = 1, d1 = {"\u0000\f\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\b\u0007\u0018\u00002\u00020\u0001B\u0005\u00a2\u0006\u0002\u0010\u0002\u00a8\u0006\u0003"}, d2 = {"Lkapt/KTest;", "", "()V", "shortened.java.kapt_test_kapt"})
|@Count(value = 3, clazz = KTest_2_1_0.class)
|public final class KTest {
|
| public KTest() {
| super();
| }
|}
""".trimMargin()
)
val compilation: Compilation = javac().withProcessors(AP()).compile(testStub)
assertThat(compilation).succeededWithoutWarnings()
assertThat(compilation).generatedSourceFile("kapt.KTest_2")
assertThat(compilation).generatedSourceFile("kapt.KTest_2_1")
assertThat(compilation).generatedSourceFile("kapt.KTest_2_1_0")
}
}