JS: add jps build test for Kotlin/Javascript two-module project
Original commit: 563ab47502
This commit is contained in:
@@ -47,8 +47,11 @@ import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.zip.ZipOutputStream;
|
||||
|
||||
import static com.intellij.openapi.util.io.FileUtil.toSystemIndependentName;
|
||||
|
||||
public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
private static final String PROJECT_NAME = "kotlinProject";
|
||||
private static final String ADDITIONAL_MODULE_NAME = "module2";
|
||||
private static final String JDK_NAME = "IDEA_JDK";
|
||||
|
||||
private static final String[] EXCLUDE_FILES = { "Excluded.class", "YetAnotherExcluded.class" };
|
||||
@@ -62,6 +65,12 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
"lib/kotlin.js",
|
||||
"lib/stdlib.meta.js"
|
||||
);
|
||||
private static final Set<String> EXPECTED_JS_FILES_IN_OUTPUT_FOR_MODULE_STDLIB_ONLY = KotlinPackage.hashSetOf(
|
||||
ADDITIONAL_MODULE_NAME + ".js",
|
||||
ADDITIONAL_MODULE_NAME + ".meta.js",
|
||||
"lib/kotlin.js",
|
||||
"lib/stdlib.meta.js"
|
||||
);
|
||||
private static final Set<String> EXPECTED_JS_FILES_IN_OUTPUT_NO_COPY = KotlinPackage.hashSetOf(
|
||||
PROJECT_NAME + ".js",
|
||||
PROJECT_NAME + ".meta.js"
|
||||
@@ -90,6 +99,7 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
"custom/META-INF-ex/file2.js",
|
||||
"custom/res0.js",
|
||||
"custom/resdir/res1.js");
|
||||
|
||||
@Override
|
||||
public void setUp() throws Exception {
|
||||
super.setUp();
|
||||
@@ -148,6 +158,20 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
checkWhen(touch("src/test1.kt"), null, k2jsOutput(PROJECT_NAME));
|
||||
}
|
||||
|
||||
public void testKotlinJavaScriptProjectWithTwoModules() {
|
||||
initProject();
|
||||
addKotlinJavaScriptStdlibDependency();
|
||||
makeAll().assertSuccessful();
|
||||
|
||||
assertEquals(EXPECTED_JS_FILES_IN_OUTPUT_FOR_STDLIB_ONLY, contentOfOutputDir(PROJECT_NAME));
|
||||
assertEquals(EXPECTED_JS_FILES_IN_OUTPUT_FOR_MODULE_STDLIB_ONLY, contentOfOutputDir(ADDITIONAL_MODULE_NAME));
|
||||
|
||||
checkWhen(touch("src/test1.kt"), null, k2jsOutput(PROJECT_NAME));
|
||||
checkWhen(touch("module2/src/module2.kt"), null, k2jsOutput(ADDITIONAL_MODULE_NAME));
|
||||
checkWhen(new Action[]{ touch("src/test1.kt"), touch("module2/src/module2.kt")}, null, k2jsOutput(PROJECT_NAME,
|
||||
ADDITIONAL_MODULE_NAME));
|
||||
}
|
||||
|
||||
public void testKotlinJavaScriptProjectWithDirectoryAsStdlib() {
|
||||
initProject();
|
||||
File jslibJar = PathUtil.getKotlinPathsForDistDirectory().getJsStdLibJarPath();
|
||||
@@ -408,11 +432,15 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String[] k2jsOutput(String moduleName) {
|
||||
String outputDir = "out/production/" + moduleName;
|
||||
String[] result = new String[2];
|
||||
result[0] = outputDir + "/" + moduleName + ".js";
|
||||
result[1] = outputDir + "/" + moduleName + ".meta.js";
|
||||
private static String[] k2jsOutput(String ...moduleNames) {
|
||||
int length = moduleNames.length;
|
||||
String[] result = new String[2 * length];
|
||||
int index = 0;
|
||||
for(String moduleName : moduleNames) {
|
||||
File outputDir = new File("out/production/" + moduleName);
|
||||
result[index++] = toSystemIndependentName(JpsJsModuleUtils.getOutputFile(outputDir, moduleName).getPath());
|
||||
result[index++] = toSystemIndependentName(JpsJsModuleUtils.getOutputMetaFile(outputDir, moduleName).getPath());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -425,7 +453,7 @@ public class KotlinJpsBuildTest extends AbstractKotlinJpsBuildTestCase {
|
||||
for(File file : files) {
|
||||
String relativePath = FileUtil.getRelativePath(baseDir, file);
|
||||
assert relativePath != null : "relativePath should not be null";
|
||||
result.add(FileUtil.toSystemIndependentName(relativePath));
|
||||
result.add(toSystemIndependentName(relativePath));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="IDEA_JDK" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="kotlinProject" />
|
||||
<orderEntry type="module" module-name="module2" />
|
||||
</component>
|
||||
</module>
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
</component>
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/kotlinProject.iml" filepath="$PROJECT_DIR$/kotlinProject.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/module2/module2.iml" filepath="$PROJECT_DIR$/module2/module2.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="IDEA_JDK" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="IDEA_JDK" jdkType="JavaSDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="module2" />
|
||||
</component>
|
||||
</module>
|
||||
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
package module2
|
||||
|
||||
fun foo() {}
|
||||
|
||||
public class Module2Class
|
||||
@@ -0,0 +1,5 @@
|
||||
import module2.Module2Class
|
||||
|
||||
fun foo() {
|
||||
val tmp = Module2Class()
|
||||
}
|
||||
Reference in New Issue
Block a user