package org.jetbrains.kotlin.maven;
import org.junit.Test;
import java.io.File;
public class IncrementalCompilationIT extends MavenITBase {
@Test
public void testSimpleCompile() throws Exception {
MavenProject project = new MavenProject("kotlinSimple");
project.exec("package")
.succeeded()
.compiledKotlin("src/A.kt", "src/useA.kt", "src/Dummy.kt");
}
@Test
public void testNoChanges() throws Exception {
MavenProject project = new MavenProject("kotlinSimple");
project.exec("package");
project.exec("package")
.succeeded()
.compiledKotlin();
}
@Test
public void testCompileError() throws Exception {
MavenProject project = new MavenProject("kotlinSimple");
project.exec("package");
File aKt = project.file("src/A.kt");
String original = "class A";
String replacement = "private class A";
MavenTestUtils.replaceFirstInFile(aKt, original, replacement);
project.exec("package")
.failed()
.contains("Cannot access 'A': it is private in file");
MavenTestUtils.replaceFirstInFile(aKt, replacement, original);
project.exec("package")
.succeeded()
.compiledKotlin("src/A.kt", "src/useA.kt");
}
@Test
public void testFunctionVisibilityChanged() throws Exception {
MavenProject project = new MavenProject("kotlinSimple");
project.exec("package");
File aKt = project.file("src/A.kt");
MavenTestUtils.replaceFirstInFile(aKt, "fun foo", "internal fun foo");
project.exec("package")
.succeeded()
.compiledKotlin("src/A.kt", "src/useA.kt");
// todo rebuild and compare output
}
}