diff --git a/compiler/testData/launcher/emptyMain.kt b/compiler/testData/launcher/emptyMain.kt new file mode 100644 index 00000000000..64a3a94b727 --- /dev/null +++ b/compiler/testData/launcher/emptyMain.kt @@ -0,0 +1,4 @@ +package test + +fun main(args: Array) { +} diff --git a/compiler/testData/launcher/helloWorld.kt b/compiler/testData/launcher/helloWorld.kt new file mode 100644 index 00000000000..aa5490220d0 --- /dev/null +++ b/compiler/testData/launcher/helloWorld.kt @@ -0,0 +1,5 @@ +package test + +fun main(args: Array) { + println("Hello!") +} diff --git a/compiler/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java b/compiler/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java index 33e3e64ae93..af321726b79 100644 --- a/compiler/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java +++ b/compiler/tests/org/jetbrains/kotlin/cli/AbstractCliTest.java @@ -63,11 +63,6 @@ public abstract class AbstractCliTest extends TestCaseWithTmpdir { } } - @NotNull - public static String getNormalizedCompilerOutput(@NotNull String pureOutput, @NotNull ExitCode exitCode, @NotNull String testDataDir) { - return getNormalizedCompilerOutput(pureOutput, exitCode, testDataDir, JvmMetadataVersion.INSTANCE); - } - @NotNull public static String getNormalizedCompilerOutput( @NotNull String pureOutput, @@ -88,8 +83,9 @@ public abstract class AbstractCliTest extends TestCaseWithTmpdir { private void doTest(@NotNull String fileName, @NotNull CLICompiler compiler) throws Exception { System.setProperty("java.awt.headless", "true"); Pair outputAndExitCode = executeCompilerGrabOutput(compiler, readArgs(fileName, tmpdir.getPath())); - String actual = - getNormalizedCompilerOutput(outputAndExitCode.getFirst(), outputAndExitCode.getSecond(), new File(fileName).getParent()); + String actual = getNormalizedCompilerOutput( + outputAndExitCode.getFirst(), outputAndExitCode.getSecond(), new File(fileName).getParent(), JvmMetadataVersion.INSTANCE + ); File outFile = new File(fileName.replaceFirst("\\.args$", ".out")); KotlinTestUtils.assertEqualsToFile(outFile, actual); diff --git a/compiler/tests/org/jetbrains/kotlin/cli/AbstractKotlincExecutableTest.java b/compiler/tests/org/jetbrains/kotlin/cli/AbstractKotlincExecutableTest.java deleted file mode 100644 index d26fbb183fe..00000000000 --- a/compiler/tests/org/jetbrains/kotlin/cli/AbstractKotlincExecutableTest.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * 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 org.jetbrains.kotlin.cli; - -import com.intellij.execution.process.ProcessOutput; -import com.intellij.execution.util.ExecUtil; -import com.intellij.openapi.util.SystemInfo; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.cli.common.ExitCode; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TestCaseWithTmpdir; -import org.jetbrains.kotlin.utils.PathUtil; - -import java.io.File; -import java.util.List; - -public abstract class AbstractKotlincExecutableTest extends TestCaseWithTmpdir { - private void doTest(@NotNull String argsFilePath, @NotNull String executableName) throws Exception { - String executableFileName = SystemInfo.isWindows ? executableName + ".bat" : executableName; - File kotlincFile = new File(PathUtil.getKotlinPathsForDistDirectory().getHomePath(), "bin/" + executableFileName); - assertTrue("kotlinc executable not found, probably you need to invoke 'dist' Ant target: " + kotlincFile.getAbsolutePath(), kotlincFile.exists()); - - List args = AbstractCliTest.readArgs(argsFilePath, tmpdir.getAbsolutePath()); - args.add(0, kotlincFile.getAbsolutePath()); - ProcessOutput processOutput = ExecUtil.execAndGetOutput(args, null); - - String stdout = processOutput.getStdout(); - String stderr = processOutput.getStderr(); - int exitCode = processOutput.getExitCode(); - - String normalizedOutput = - AbstractCliTest.getNormalizedCompilerOutput(stderr, ExitCode.values()[exitCode], new File(argsFilePath).getParent()); - File outFile = new File(argsFilePath.replace(".args", ".out")); - - try { - KotlinTestUtils.assertEqualsToFile(outFile, normalizedOutput); - } - catch (Exception e) { - System.err.println("exit code " + exitCode); - System.err.println("" + stdout + ""); - System.err.println("" + stderr + ""); - - throw e; - } - } - - protected void doJvmTest(@NotNull String argsFilePath) throws Exception { - doTest(argsFilePath, "kotlinc-jvm"); - } - - protected void doJsTest(@NotNull String argsFilePath) throws Exception { - doTest(argsFilePath, "kotlinc-js"); - } -} diff --git a/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java deleted file mode 100644 index e9b708b6f50..00000000000 --- a/compiler/tests/org/jetbrains/kotlin/cli/KotlincExecutableTestGenerated.java +++ /dev/null @@ -1,409 +0,0 @@ -/* - * Copyright 2010-2016 JetBrains s.r.o. - * - * 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 org.jetbrains.kotlin.cli; - -import com.intellij.testFramework.TestDataPath; -import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; -import org.jetbrains.kotlin.test.KotlinTestUtils; -import org.jetbrains.kotlin.test.TestMetadata; -import org.junit.runner.RunWith; - -import java.io.File; -import java.util.regex.Pattern; - -/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ -@SuppressWarnings("all") -@RunWith(JUnit3RunnerWithInners.class) -public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTest { - @TestMetadata("compiler/testData/cli/jvm") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class Jvm extends AbstractKotlincExecutableTest { - public void testAllFilesPresentInJvm() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/cli/jvm"), Pattern.compile("^(.+)\\.args$"), false); - } - - @TestMetadata("classAndFileClassClash.args") - public void testClassAndFileClassClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/classAndFileClassClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("classAndOtherFileClassClash.args") - public void testClassAndOtherFileClassClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/classAndOtherFileClassClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("classAndPartClash.args") - public void testClassAndPartClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/classAndPartClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("classAndTraitClash.args") - public void testClassAndTraitClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/classAndTraitClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("classpath.args") - public void testClasspath() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/classpath.args"); - doJvmTest(fileName); - } - - @TestMetadata("conflictingOverloads.args") - public void testConflictingOverloads() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/conflictingOverloads.args"); - doJvmTest(fileName); - } - - @TestMetadata("conflictingRuntimeVersion.args") - public void testConflictingRuntimeVersion() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/conflictingRuntimeVersion.args"); - doJvmTest(fileName); - } - - @TestMetadata("conflictingRuntimeVersionNoError.args") - public void testConflictingRuntimeVersionNoError() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/conflictingRuntimeVersionNoError.args"); - doJvmTest(fileName); - } - - @TestMetadata("diagnosticsOrder.args") - public void testDiagnosticsOrder() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/diagnosticsOrder.args"); - doJvmTest(fileName); - } - - @TestMetadata("duplicateSources.args") - public void testDuplicateSources() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/duplicateSources.args"); - doJvmTest(fileName); - } - - @TestMetadata("duplicateSourcesInModule.args") - public void testDuplicateSourcesInModule() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/duplicateSourcesInModule.args"); - doJvmTest(fileName); - } - - @TestMetadata("emptySources.args") - public void testEmptySources() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/emptySources.args"); - doJvmTest(fileName); - } - - @TestMetadata("extraHelp.args") - public void testExtraHelp() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/extraHelp.args"); - doJvmTest(fileName); - } - - @TestMetadata("fileClassAndMultifileClassClash.args") - public void testFileClassAndMultifileClassClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/fileClassAndMultifileClassClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("fileClassAndTImplClash.args") - public void testFileClassAndTImplClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/fileClassAndTImplClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("fileClassClashMultipleFiles.args") - public void testFileClassClashMultipleFiles() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/fileClassClashMultipleFiles.args"); - doJvmTest(fileName); - } - - @TestMetadata("help.args") - public void testHelp() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/help.args"); - doJvmTest(fileName); - } - - @TestMetadata("inlineCycle.args") - public void testInlineCycle() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/inlineCycle.args"); - doJvmTest(fileName); - } - - @TestMetadata("kotlinPackage.args") - public void testKotlinPackage() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/kotlinPackage.args"); - doJvmTest(fileName); - } - - @TestMetadata("multipleTextRangesInDiagnosticsOrder.args") - public void testMultipleTextRangesInDiagnosticsOrder() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/multipleTextRangesInDiagnosticsOrder.args"); - doJvmTest(fileName); - } - - @TestMetadata("nonExistingClassPathAndAnnotationsPath.args") - public void testNonExistingClassPathAndAnnotationsPath() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/nonExistingClassPathAndAnnotationsPath.args"); - doJvmTest(fileName); - } - - @TestMetadata("nonExistingSourcePath.args") - public void testNonExistingSourcePath() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/nonExistingSourcePath.args"); - doJvmTest(fileName); - } - - @TestMetadata("nonLocalDisabled.args") - public void testNonLocalDisabled() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/nonLocalDisabled.args"); - doJvmTest(fileName); - } - - @TestMetadata("nonexistentPathInModule.args") - public void testNonexistentPathInModule() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/nonexistentPathInModule.args"); - doJvmTest(fileName); - } - - @TestMetadata("nonexistentScript.args") - public void testNonexistentScript() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/nonexistentScript.args"); - doJvmTest(fileName); - } - - @TestMetadata("pluginSimple.args") - public void testPluginSimple() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/pluginSimple.args"); - doJvmTest(fileName); - } - - @TestMetadata("pluginSimpleUsage.args") - public void testPluginSimpleUsage() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/pluginSimpleUsage.args"); - doJvmTest(fileName); - } - - @TestMetadata("sanitized-name.clash.args") - public void testSanitized_name_clash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/sanitized-name.clash.args"); - doJvmTest(fileName); - } - - @TestMetadata("signatureClash.args") - public void testSignatureClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/signatureClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("simple.args") - public void testSimple() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/simple.args"); - doJvmTest(fileName); - } - - @TestMetadata("suppressAllWarningsJvm.args") - public void testSuppressAllWarningsJvm() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/suppressAllWarningsJvm.args"); - doJvmTest(fileName); - } - - @TestMetadata("syntheticAccessorForPropertiesSignatureClash.args") - public void testSyntheticAccessorForPropertiesSignatureClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/syntheticAccessorForPropertiesSignatureClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("syntheticAccessorPropertyAndFunSignatureClash.args") - public void testSyntheticAccessorPropertyAndFunSignatureClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/syntheticAccessorPropertyAndFunSignatureClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("syntheticAccessorSignatureClash.args") - public void testSyntheticAccessorSignatureClash() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/syntheticAccessorSignatureClash.args"); - doJvmTest(fileName); - } - - @TestMetadata("version.args") - public void testVersion() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/version.args"); - doJvmTest(fileName); - } - - @TestMetadata("warningsInDummy.args") - public void testWarningsInDummy() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/warningsInDummy.args"); - doJvmTest(fileName); - } - - @TestMetadata("wrongAbiVersion.args") - public void testWrongAbiVersion() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/wrongAbiVersion.args"); - doJvmTest(fileName); - } - - @TestMetadata("wrongAbiVersionNoErrors.args") - public void testWrongAbiVersionNoErrors() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/wrongAbiVersionNoErrors.args"); - doJvmTest(fileName); - } - - @TestMetadata("wrongArgument.args") - public void testWrongArgument() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/wrongArgument.args"); - doJvmTest(fileName); - } - - @TestMetadata("wrongScriptWithNoSource.args") - public void testWrongScriptWithNoSource() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/jvm/wrongScriptWithNoSource.args"); - doJvmTest(fileName); - } - } - - @TestMetadata("compiler/testData/cli/js") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class Js extends AbstractKotlincExecutableTest { - public void testAllFilesPresentInJs() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/cli/js"), Pattern.compile("^(.+)\\.args$"), false); - } - - @TestMetadata("createKjsm.args") - public void testCreateKjsm() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/createKjsm.args"); - doJsTest(fileName); - } - - @TestMetadata("createMetadata.args") - public void testCreateMetadata() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/createMetadata.args"); - doJsTest(fileName); - } - - @TestMetadata("diagnosticForClassLiteral.args") - public void testDiagnosticForClassLiteral() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/diagnosticForClassLiteral.args"); - doJsTest(fileName); - } - - @TestMetadata("diagnosticWhenReferenceToBuiltinsMember.args") - public void testDiagnosticWhenReferenceToBuiltinsMember() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/diagnosticWhenReferenceToBuiltinsMember.args"); - doJsTest(fileName); - } - - @TestMetadata("emptySources.args") - public void testEmptySources() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/emptySources.args"); - doJsTest(fileName); - } - - @TestMetadata("inlineCycle.args") - public void testInlineCycle() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/inlineCycle.args"); - doJsTest(fileName); - } - - @TestMetadata("jsExtraHelp.args") - public void testJsExtraHelp() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/jsExtraHelp.args"); - doJsTest(fileName); - } - - @TestMetadata("jsHelp.args") - public void testJsHelp() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/jsHelp.args"); - doJsTest(fileName); - } - - @TestMetadata("libraryDirNotFound.args") - public void testLibraryDirNotFound() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/libraryDirNotFound.args"); - doJsTest(fileName); - } - - @TestMetadata("nonExistingSourcePath.args") - public void testNonExistingSourcePath() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/nonExistingSourcePath.args"); - doJsTest(fileName); - } - - @TestMetadata("notValidLibraryDir.args") - public void testNotValidLibraryDir() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/notValidLibraryDir.args"); - doJsTest(fileName); - } - - @TestMetadata("outputIsDirectory.args") - public void testOutputIsDirectory() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/outputIsDirectory.args"); - doJsTest(fileName); - } - - @TestMetadata("outputPostfixFileNotFound.args") - public void testOutputPostfixFileNotFound() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/outputPostfixFileNotFound.args"); - doJsTest(fileName); - } - - @TestMetadata("outputPrefixFileNotFound.args") - public void testOutputPrefixFileNotFound() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/outputPrefixFileNotFound.args"); - doJsTest(fileName); - } - - @TestMetadata("simple2js.args") - public void testSimple2js() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/simple2js.args"); - doJsTest(fileName); - } - - @TestMetadata("suppressAllWarningsJS.args") - public void testSuppressAllWarningsJS() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/suppressAllWarningsJS.args"); - doJsTest(fileName); - } - - @TestMetadata("version.args") - public void testVersion() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/version.args"); - doJsTest(fileName); - } - - @TestMetadata("withFolderAsLib.args") - public void testWithFolderAsLib() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/withFolderAsLib.args"); - doJsTest(fileName); - } - - @TestMetadata("withLib.args") - public void testWithLib() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/withLib.args"); - doJsTest(fileName); - } - - @TestMetadata("wrongAbiVersion.args") - public void testWrongAbiVersion() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/cli/js/wrongAbiVersion.args"); - doJsTest(fileName); - } - } -} diff --git a/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt b/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt new file mode 100644 index 00000000000..eb5535ab129 --- /dev/null +++ b/compiler/tests/org/jetbrains/kotlin/cli/LauncherScriptTest.kt @@ -0,0 +1,85 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * 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 org.jetbrains.kotlin.cli + +import com.intellij.execution.configurations.GeneralCommandLine +import com.intellij.execution.util.ExecUtil +import com.intellij.openapi.util.SystemInfo +import org.jetbrains.kotlin.cli.common.ExitCode +import org.jetbrains.kotlin.test.KotlinTestUtils +import org.jetbrains.kotlin.test.TestCaseWithTmpdir +import org.jetbrains.kotlin.utils.PathUtil +import java.io.File + +class LauncherScriptTest : TestCaseWithTmpdir() { + private fun runProcess( + executableName: String, + vararg args: String, + expectedStdout: String = "", + expectedStderr: String = "", + expectedExitCode: ExitCode = ExitCode.OK + ) { + val executableFileName = if (SystemInfo.isWindows) "$executableName.bat" else executableName + val launcherFile = File(PathUtil.getKotlinPathsForDistDirectory().homePath, "bin/$executableFileName") + assertTrue("Launcher script not found, run 'ant dist': ${launcherFile.absolutePath}", launcherFile.exists()) + + val processOutput = ExecUtil.execAndGetOutput(GeneralCommandLine(launcherFile.absolutePath, *args)) + val stdout = processOutput.stdout + val stderr = processOutput.stderr + val exitCode = processOutput.exitCode + + try { + assertEquals(expectedStdout, stdout) + assertEquals(expectedStderr, stderr) + assertEquals(expectedExitCode.code, exitCode) + } + catch (e: Exception) { + System.err.println("exit code $exitCode") + System.err.println("$stdout") + System.err.println("$stderr") + throw e + } + } + + private val testDataDirectory: String + get() = KotlinTestUtils.getTestDataPathBase() + "/launcher" + + fun testKotlincSimple() { + runProcess( + "kotlinc", + "$testDataDirectory/helloWorld.kt", + "-d", tmpdir.path + ) + } + + fun testKotlincJvmSimple() { + runProcess( + "kotlinc-jvm", + "$testDataDirectory/helloWorld.kt", + "-d", tmpdir.path + ) + } + + fun testKotlincJsSimple() { + runProcess( + "kotlinc-js", + "$testDataDirectory/emptyMain.kt", + "-no-stdlib", + "-output", File(tmpdir, "out.js").path + ) + } +} diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java index 4c97165a649..302dd1a4c44 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/CompileKotlinAgainstCustomBinariesTest.java @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.codegen.inline.InlineCodegenUtil; import org.jetbrains.kotlin.config.CompilerConfiguration; import org.jetbrains.kotlin.descriptors.DeclarationDescriptor; import org.jetbrains.kotlin.descriptors.PackageViewDescriptor; +import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion; import org.jetbrains.kotlin.resolve.BindingContext; import org.jetbrains.kotlin.resolve.DescriptorUtils; import org.jetbrains.kotlin.resolve.lazy.JvmResolveUtil; @@ -77,7 +78,9 @@ public class CompileKotlinAgainstCustomBinariesTest extends TestCaseWithTmpdir { @NotNull private String normalizeOutput(@NotNull Pair output) { - return AbstractCliTest.getNormalizedCompilerOutput(output.getFirst(), output.getSecond(), getTestDataDirectory().getPath()); + return AbstractCliTest.getNormalizedCompilerOutput( + output.getFirst(), output.getSecond(), getTestDataDirectory().getPath(), JvmMetadataVersion.INSTANCE + ); } private void doTestWithTxt(@NotNull File... extraClassPath) throws Exception { diff --git a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 8c5f389b124..d5a327d56cd 100644 --- a/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/src/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -30,7 +30,6 @@ import org.jetbrains.kotlin.cfg.AbstractDataFlowTest import org.jetbrains.kotlin.cfg.AbstractPseudoValueTest import org.jetbrains.kotlin.checkers.* import org.jetbrains.kotlin.cli.AbstractCliTest -import org.jetbrains.kotlin.cli.AbstractKotlincExecutableTest import org.jetbrains.kotlin.codegen.* import org.jetbrains.kotlin.codegen.defaultConstructor.AbstractDefaultArgumentsReflectionTest import org.jetbrains.kotlin.codegen.flags.AbstractWriteFlagsTest @@ -309,11 +308,6 @@ fun main(args: Array) { model("cli/js", extension = "args", testMethod = "doJsTest", recursive = false) } - testClass() { - model("cli/jvm", extension = "args", testMethod = "doJvmTest", recursive = false) - model("cli/js", extension = "args", testMethod = "doJsTest", recursive = false) - } - testClass() { model("repl", extension = "repl") }