package org.jetbrains.kotlin.maven;
import org.apache.maven.plugin.testing.SilentLog;
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageLocation;
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public class KotlinCompilationFailureExceptionTest {
@Test
public void testNoLocation() throws Exception {
MavenPluginLogMessageCollector collector = new MavenPluginLogMessageCollector(new SilentLog());
collector.report(CompilerMessageSeverity.ERROR, "Something went wrong", null);
try {
collector.throwKotlinCompilerException();
fail();
} catch (KotlinCompilationFailureException e) {
assertEquals("Something went wrong", e.getLongMessage().trim());
}
}
@Test
public void testLocationNoLineNoColumn() throws Exception {
MavenPluginLogMessageCollector collector = new MavenPluginLogMessageCollector(new SilentLog());
collector.report(CompilerMessageSeverity.ERROR, "Error in file", CompilerMessageLocation.create("myfile.txt", -1, -1, "nothing"));
try {
collector.throwKotlinCompilerException();
fail();
} catch (KotlinCompilationFailureException e) {
assertEquals("myfile.txt: Error in file", e.getLongMessage().trim());
}
}
@Test
public void testLocationNoColumn() throws Exception {
MavenPluginLogMessageCollector collector = new MavenPluginLogMessageCollector(new SilentLog());
collector.report(CompilerMessageSeverity.ERROR, "Error in file", CompilerMessageLocation.create("myfile.txt", 777, -1, "nothing"));
try {
collector.throwKotlinCompilerException();
fail();
} catch (KotlinCompilationFailureException e) {
assertEquals("myfile.txt:[777] Error in file", e.getLongMessage().trim());
}
}
@Test
public void testLocationWithLocation() throws Exception {
MavenPluginLogMessageCollector collector = new MavenPluginLogMessageCollector(new SilentLog());
collector.report(CompilerMessageSeverity.ERROR, "Error in file", CompilerMessageLocation.create("myfile.txt", 777, 9, "nothing"));
try {
collector.throwKotlinCompilerException();
fail();
} catch (KotlinCompilationFailureException e) {
assertEquals("myfile.txt:[777,9] Error in file", e.getLongMessage().trim());
}
}
}