Convert ScriptTest to Kotlin - phase 2 - convert

This commit is contained in:
Ilya Chernikov
2016-05-30 14:01:36 +02:00
parent 0699293fb7
commit bd70481bea
@@ -14,96 +14,88 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.scripts;
package org.jetbrains.kotlin.scripts
import com.intellij.openapi.Disposable;
import com.intellij.openapi.util.Disposer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.builtins.DefaultBuiltIns;
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys;
import org.jetbrains.kotlin.cli.common.messages.*;
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment;
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler;
import org.jetbrains.kotlin.codegen.CompilationException;
import org.jetbrains.kotlin.config.CompilerConfiguration;
import org.jetbrains.kotlin.config.ContentRootsKt;
import org.jetbrains.kotlin.config.JVMConfigurationKeys;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.script.KotlinScriptDefinition;
import org.jetbrains.kotlin.script.ScriptParameter;
import org.jetbrains.kotlin.test.ConfigurationKind;
import org.jetbrains.kotlin.test.KotlinTestUtils;
import org.jetbrains.kotlin.test.TestJdkKind;
import org.jetbrains.kotlin.utils.KotlinPaths;
import org.jetbrains.kotlin.utils.PathUtil;
import org.junit.Assert;
import org.junit.Test;
import com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.messages.*
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinToJVMBytecodeCompiler
import org.jetbrains.kotlin.codegen.CompilationException
import org.jetbrains.kotlin.config.JVMConfigurationKeys
import org.jetbrains.kotlin.config.addKotlinSourceRoot
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.script.KotlinScriptDefinition
import org.jetbrains.kotlin.script.ScriptParameter
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.utils.PathUtil
import org.junit.Assert
import org.junit.Test
import java.util.Collections;
import java.util.List;
public class ScriptTest {
class ScriptTest {
@Test
public void testScript() throws Exception {
Class<?> aClass = compileScript("fib.kts", new TestScriptDefinition(".kts", numIntParam()));
Assert.assertNotNull(aClass);
aClass.getConstructor(int.class).newInstance(4);
@Throws(Exception::class)
fun testScript() {
val aClass = compileScript("fib.kts", TestScriptDefinition(".kts", numIntParam()))
Assert.assertNotNull(aClass)
aClass!!.getConstructor(Integer.TYPE).newInstance(4)
}
@Test
public void testScriptWithPackage() throws Exception {
Class<?> aClass = compileScript("fib.pkg.kts", new TestScriptDefinition(".kts", numIntParam()));
Assert.assertNotNull(aClass);
aClass.getConstructor(int.class).newInstance(4);
@Throws(Exception::class)
fun testScriptWithPackage() {
val aClass = compileScript("fib.pkg.kts", TestScriptDefinition(".kts", numIntParam()))
Assert.assertNotNull(aClass)
aClass!!.getConstructor(Integer.TYPE).newInstance(4)
}
@Test
public void testScriptWithScriptDefinition() throws Exception {
Class<?> aClass = compileScript("fib.fib.kt", new TestScriptDefinition(".fib.kt", numIntParam()));
Assert.assertNotNull(aClass);
aClass.getConstructor(int.class).newInstance(4);
@Throws(Exception::class)
fun testScriptWithScriptDefinition() {
val aClass = compileScript("fib.fib.kt", TestScriptDefinition(".fib.kt", numIntParam()))
Assert.assertNotNull(aClass)
aClass!!.getConstructor(Integer.TYPE).newInstance(4)
}
@Nullable
private static Class<?> compileScript(
@NotNull String scriptPath,
@NotNull KotlinScriptDefinition scriptDefinition
) {
KotlinPaths paths = PathUtil.getKotlinPathsForDistDirectory();
MessageCollector messageCollector = new PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false);
private fun compileScript(
scriptPath: String,
scriptDefinition: KotlinScriptDefinition): Class<*>? {
val paths = PathUtil.getKotlinPathsForDistDirectory()
val messageCollector = PrintingMessageCollector(System.err, MessageRenderer.PLAIN_FULL_PATHS, false)
Disposable rootDisposable = Disposer.newDisposable();
val rootDisposable = Disposer.newDisposable()
try {
CompilerConfiguration configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK);
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector);
ContentRootsKt.addKotlinSourceRoot(configuration, "compiler/testData/script/" + scriptPath);
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition);
val configuration = KotlinTestUtils.newConfiguration(ConfigurationKind.JDK_ONLY, TestJdkKind.FULL_JDK)
configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector)
configuration.addKotlinSourceRoot("compiler/testData/script/" + scriptPath)
configuration.add(JVMConfigurationKeys.SCRIPT_DEFINITIONS, scriptDefinition)
KotlinCoreEnvironment environment =
KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES);
val environment = KotlinCoreEnvironment.createForProduction(rootDisposable, configuration, EnvironmentConfigFiles.JVM_CONFIG_FILES)
try {
return KotlinToJVMBytecodeCompiler.INSTANCE.compileScript(environment, paths);
return KotlinToJVMBytecodeCompiler.compileScript(environment, paths)
}
catch (CompilationException e) {
catch (e: CompilationException) {
messageCollector.report(CompilerMessageSeverity.EXCEPTION, OutputMessageUtil.renderException(e),
MessageUtil.psiElementToMessageLocation(e.getElement()));
return null;
MessageUtil.psiElementToMessageLocation(e.element))
return null
}
catch (Throwable t) {
MessageCollectorUtil.reportException(messageCollector, t);
return null;
catch (t: Throwable) {
MessageCollectorUtil.reportException(messageCollector, t)
return null
}
}
finally {
Disposer.dispose(rootDisposable);
Disposer.dispose(rootDisposable)
}
}
@NotNull
private static List<ScriptParameter> numIntParam() {
return Collections.singletonList(new ScriptParameter(Name.identifier("num"), DefaultBuiltIns.getInstance().getIntType()));
private fun numIntParam(): List<ScriptParameter> {
return listOf(ScriptParameter(Name.identifier("num"), DefaultBuiltIns.Instance.intType))
}
}