K2JS: fix KT-5639 Exception in kotlin-js when directory is given instead of output file
#KT-5639 Fixed
This commit is contained in:
@@ -143,6 +143,13 @@ public class K2JSCompiler extends CLICompiler<K2JSCompilerArguments> {
|
|||||||
|
|
||||||
OutputFileCollection outputFiles = translate(mainCallParameters, config, sourcesFiles, outputFile, outputPrefixFile, outputPostfixFile);
|
OutputFileCollection outputFiles = translate(mainCallParameters, config, sourcesFiles, outputFile, outputPrefixFile, outputPostfixFile);
|
||||||
|
|
||||||
|
if (outputFile.isDirectory()) {
|
||||||
|
messageCollector.report(CompilerMessageSeverity.ERROR,
|
||||||
|
"Cannot open output file '" + outputFile.getPath() + "': is a directory",
|
||||||
|
CompilerMessageLocation.NO_LOCATION);
|
||||||
|
return ExitCode.COMPILATION_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
File outputDir = outputFile.getParentFile();
|
File outputDir = outputFile.getParentFile();
|
||||||
if (outputDir == null) {
|
if (outputDir == null) {
|
||||||
outputDir = outputFile.getAbsoluteFile().getParentFile();
|
outputDir = outputFile.getAbsoluteFile().getParentFile();
|
||||||
|
|||||||
@@ -0,0 +1,4 @@
|
|||||||
|
$TESTDATA_DIR$/simple2js.kt
|
||||||
|
-no-stdlib
|
||||||
|
-output
|
||||||
|
$TESTDATA_DIR$
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
ERROR: Cannot open output file 'compiler/testData/cli/js': is a directory
|
||||||
|
COMPILATION_ERROR
|
||||||
@@ -174,6 +174,12 @@ public class KotlincExecutableTestGenerated extends AbstractKotlincExecutableTes
|
|||||||
doJsTest(fileName);
|
doJsTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("outputIsDirectory.args")
|
||||||
|
public void testOutputIsDirectory() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/js/outputIsDirectory.args");
|
||||||
|
doJsTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("outputPostfixFileNotFound.args")
|
@TestMetadata("outputPostfixFileNotFound.args")
|
||||||
public void testOutputPostfixFileNotFound() throws Exception {
|
public void testOutputPostfixFileNotFound() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/js/outputPostfixFileNotFound.args");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/cli/js/outputPostfixFileNotFound.args");
|
||||||
|
|||||||
@@ -30,18 +30,25 @@ public class K2JsCliTest extends CliBaseTest {
|
|||||||
Assert.assertTrue(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
Assert.assertTrue(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void outputIsDirectory() throws Exception {
|
||||||
|
executeCompilerCompareOutputJS();
|
||||||
|
|
||||||
|
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").exists());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void outputPrefixFileNotFound() throws Exception {
|
public void outputPrefixFileNotFound() throws Exception {
|
||||||
executeCompilerCompareOutputJS();
|
executeCompilerCompareOutputJS();
|
||||||
|
|
||||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void outputPostfixFileNotFound() throws Exception {
|
public void outputPostfixFileNotFound() throws Exception {
|
||||||
executeCompilerCompareOutputJS();
|
executeCompilerCompareOutputJS();
|
||||||
|
|
||||||
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").isFile());
|
Assert.assertFalse(new File(tmpdir.getTmpDir(), "out.js").exists());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user