From 495c876b3bacbd57b6b5109b9bbd769ca4452609 Mon Sep 17 00:00:00 2001 From: Alexey Andreev Date: Mon, 4 Jul 2016 18:30:30 +0300 Subject: [PATCH] KT-12877: add tests for UMD modules --- .../org/jetbrains/kotlin/js/test/BasicBoxTest.kt | 6 +++++- .../kotlin/js/test/semantics/BoxJsTestGenerated.java | 12 ++++++++++++ .../testData/box/jsModule/externalFunctionUmd.js | 5 +++++ .../testData/box/jsModule/externalFunctionUmd.kt | 11 +++++++++++ .../box/jsModule/externalFunctionUmdFallback.js | 3 +++ .../box/jsModule/externalFunctionUmdFallback.kt | 12 ++++++++++++ 6 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 js/js.translator/testData/box/jsModule/externalFunctionUmd.js create mode 100644 js/js.translator/testData/box/jsModule/externalFunctionUmd.kt create mode 100644 js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.js create mode 100644 js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt index dcb2aad73d4..f6a3caa3a3a 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/BasicBoxTest.kt @@ -118,9 +118,12 @@ abstract class BasicBoxTest( } val additionalFiles = mutableListOf() - if (modules.size > 1 || MODULE_KIND_PATTERN.matcher(expectedText).find()) { + if ((modules.size > 1 || MODULE_KIND_PATTERN.matcher(expectedText).find()) && + !NO_MODULE_SYSTEM_PATTERN.matcher(expectedText).find() + ) { additionalFiles += MODULE_EMULATION_FILE } + val additionalJsFile = filePath.removeSuffix("." + KotlinFileType.EXTENSION) + JavaScript.DOT_EXTENSION if (File(additionalJsFile).exists()) { additionalFiles += additionalJsFile @@ -327,6 +330,7 @@ abstract class BasicBoxTest( val TEST_DATA_DIR_PATH = "js/js.translator/testData/" private val MODULE_KIND_PATTERN = Pattern.compile("^// *MODULE_KIND: *(.+)$", Pattern.MULTILINE) + private val NO_MODULE_SYSTEM_PATTERN = Pattern.compile("^// *NO_JS_MODULE_SYSTEM", Pattern.MULTILINE) private val NO_INLINE_PATTERN = Pattern.compile("^// *NO_INLINE *$", Pattern.MULTILINE) private val SKIP_NODE_JS = Pattern.compile("^// *SKIP_NODE_JS *$", Pattern.MULTILINE) } diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java index bd37ecac9e7..5980a879a6d 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/semantics/BoxJsTestGenerated.java @@ -5000,6 +5000,18 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest { doTest(fileName); } + @TestMetadata("externalFunctionUmd.kt") + public void testExternalFunctionUmd() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalFunctionUmd.kt"); + doTest(fileName); + } + + @TestMetadata("externalFunctionUmdFallback.kt") + public void testExternalFunctionUmdFallback() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt"); + doTest(fileName); + } + @TestMetadata("externalObject.kt") public void testExternalObject() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("js/js.translator/testData/box/jsModule/externalObject.kt"); diff --git a/js/js.translator/testData/box/jsModule/externalFunctionUmd.js b/js/js.translator/testData/box/jsModule/externalFunctionUmd.js new file mode 100644 index 00000000000..97c66332846 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmd.js @@ -0,0 +1,5 @@ +define("lib-foo", [], function() { + return function(y) { + return 23 + y; + }; +}); \ No newline at end of file diff --git a/js/js.translator/testData/box/jsModule/externalFunctionUmd.kt b/js/js.translator/testData/box/jsModule/externalFunctionUmd.kt new file mode 100644 index 00000000000..6be4e6e87b1 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmd.kt @@ -0,0 +1,11 @@ +// MODULE_KIND: UMD +package foo + +@JsModule("lib-foo") +@JsNonModule +@native fun foo(x: Int): Int = noImpl + +fun box(): String { + assertEquals(65, foo(42)) + return "OK" +} \ No newline at end of file diff --git a/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.js b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.js new file mode 100644 index 00000000000..c13cd43caa0 --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.js @@ -0,0 +1,3 @@ +function lib(y) { + return 23 + y; +} \ No newline at end of file diff --git a/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt new file mode 100644 index 00000000000..d9e1182d55c --- /dev/null +++ b/js/js.translator/testData/box/jsModule/externalFunctionUmdFallback.kt @@ -0,0 +1,12 @@ +// MODULE_KIND: UMD +// NO_JS_MODULE_SYSTEM +package foo + +@JsModule("lib") +@JsNonModule +@native fun foo(x: Int): Int = noImpl + +fun box(): String { + assertEquals(65, foo(42)) + return "OK" +} \ No newline at end of file