From b5a7b9c6613c792a7222288c5acac5f293dcc465 Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Tue, 13 Jun 2023 16:20:49 +0200 Subject: [PATCH] [JS] Migrate multi module order test --- .../kotlin/generators/tests/GenerateJsTests.kt | 1 + .../jetbrains/kotlin/js/test/AbstractJsTest.kt | 16 ---------------- .../js/test/handlers/JsWrongModuleHandler.kt | 10 ++++++---- .../kotlin/js/test/ir/AbstractJsIrTest.kt | 17 +++++++++++++++++ .../{ => ir}/MultiModuleOrderTestGenerated.java | 4 ++-- .../testData/multiModuleOrder/plain.kt | 1 + .../testData/multiModuleOrder/umd.kt | 1 + 7 files changed, 28 insertions(+), 22 deletions(-) rename js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/{ => ir}/MultiModuleOrderTestGenerated.java (92%) diff --git a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt index 6258e38618c..3569fb9373d 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/generators/tests/GenerateJsTests.kt @@ -17,6 +17,7 @@ import org.jetbrains.kotlin.js.test.ir.* import org.jetbrains.kotlin.js.testOld.AbstractDceTest import org.jetbrains.kotlin.test.TargetBackend import org.jetbrains.kotlin.js.test.fir.AbstractFirLightTreeJsIrTextTest +import org.jetbrains.kotlin.js.test.ir.AbstractMultiModuleOrderTest import org.jetbrains.kotlin.js.testOld.klib.AbstractClassicJsKlibEvolutionTest import org.jetbrains.kotlin.js.testOld.klib.AbstractFirJsKlibEvolutionTest diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt index b6caab0246b..c83dd69ca27 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/AbstractJsTest.kt @@ -62,22 +62,6 @@ abstract class AbstractJsTest( } } -open class AbstractMultiModuleOrderTest : AbstractJsTest( - pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/multiModuleOrder/", - testGroupOutputDirPrefix = "multiModuleOrder/" -) { - override fun configure(builder: TestConfigurationBuilder) { - super.configure(builder) - with(builder) { - configureJsArtifactsHandlersStep { - useHandlers( - ::JsWrongModuleHandler - ) - } - } - } -} - open class AbstractWebDemoExamplesTest : AbstractJsTest( pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/webDemoExamples/", testGroupOutputDirPrefix = "webDemoExamples/" diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsWrongModuleHandler.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsWrongModuleHandler.kt index fdf67098694..b5260cbb182 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsWrongModuleHandler.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/handlers/JsWrongModuleHandler.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.js.test.handlers +import org.jetbrains.kotlin.ir.backend.js.transformers.irToJs.TranslationMode import org.jetbrains.kotlin.js.test.utils.getTestChecker import org.jetbrains.kotlin.test.backend.handlers.JsBinaryArtifactHandler import org.jetbrains.kotlin.test.model.BinaryArtifacts @@ -20,16 +21,17 @@ class JsWrongModuleHandler(testServices: TestServices) : JsBinaryArtifactHandler override fun processAfterAllModules(someAssertionWasFailed: Boolean) { val originalFileName = testServices.moduleStructure.originalTestDataFiles.first().nameWithoutExtension - val parentDir = JsEnvironmentConfigurator.getJsArtifactsOutputDir(testServices) + val parentDir = JsEnvironmentConfigurator.getJsArtifactsOutputDir(testServices, translationMode = TranslationMode.PER_MODULE_DEV) + val kotlinJsFile = File(parentDir, "$originalFileName-kotlin_kotlin_v5.js").path val mainJsFile = File(parentDir, "${originalFileName}_v5.js").path - val libJsFile = File(parentDir, "$originalFileName-lib_v5.js").path + val libJsFile = File(parentDir, "$originalFileName-kotlin_lib_v5.js").path try { - getTestChecker(testServices).run(listOf(mainJsFile, libJsFile)) + getTestChecker(testServices).run(listOf(kotlinJsFile, mainJsFile, libJsFile)) } catch (e: RuntimeException) { testServices.assertions.assertTrue(e is IllegalStateException) val message = e.message!! - testServices.assertions.assertTrue("'lib'" in message) { + testServices.assertions.assertTrue("'kotlin_lib'" in message) { "Exception message should contain reference to dependency (lib)" } testServices.assertions.assertTrue("'main'" in message) { diff --git a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt index dabd342999c..f7a3bb7b38b 100644 --- a/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt +++ b/js/js.tests/test/org/jetbrains/kotlin/js/test/ir/AbstractJsIrTest.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.js.test.ir +import org.jetbrains.kotlin.js.test.AbstractJsTest import org.jetbrains.kotlin.js.test.JsSteppingTestAdditionalSourceProvider import org.jetbrains.kotlin.js.test.converters.JsIrBackendFacade import org.jetbrains.kotlin.js.test.converters.JsKlibBackendFacade @@ -146,6 +147,22 @@ open class AbstractSourceMapGenerationSmokeTest : AbstractJsIrTest( } } +open class AbstractMultiModuleOrderTest : AbstractJsIrTest( + pathToTestDir = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/multiModuleOrder/", + testGroupOutputDirPrefix = "multiModuleOrder/" +) { + override fun configure(builder: TestConfigurationBuilder) { + super.configure(builder) + with(builder) { + configureJsArtifactsHandlersStep { + useHandlers( + ::JsWrongModuleHandler + ) + } + } + } +} + private fun configureJsIrLineNumberTest(builder: TestConfigurationBuilder) { with(builder) { defaultDirectives { diff --git a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/MultiModuleOrderTestGenerated.java b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/MultiModuleOrderTestGenerated.java similarity index 92% rename from js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/MultiModuleOrderTestGenerated.java rename to js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/MultiModuleOrderTestGenerated.java index f6d35b8d4db..7865c8a4a8b 100644 --- a/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/MultiModuleOrderTestGenerated.java +++ b/js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/ir/MultiModuleOrderTestGenerated.java @@ -3,7 +3,7 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.js.test; +package org.jetbrains.kotlin.js.test.ir; import com.intellij.testFramework.TestDataPath; import org.jetbrains.kotlin.test.util.KtTestUtil; @@ -22,7 +22,7 @@ import java.util.regex.Pattern; public class MultiModuleOrderTestGenerated extends AbstractMultiModuleOrderTest { @Test public void testAllFilesPresentInMultiModuleOrder() throws Exception { - KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/multiModuleOrder"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true); + KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("js/js.translator/testData/multiModuleOrder"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true); } @Test diff --git a/js/js.translator/testData/multiModuleOrder/plain.kt b/js/js.translator/testData/multiModuleOrder/plain.kt index 5d88270e501..b7cc3bd1ec0 100644 --- a/js/js.translator/testData/multiModuleOrder/plain.kt +++ b/js/js.translator/testData/multiModuleOrder/plain.kt @@ -1,3 +1,4 @@ +// SPLIT_PER_MODULE // MODULE: lib // FILE: lib.kt package lib diff --git a/js/js.translator/testData/multiModuleOrder/umd.kt b/js/js.translator/testData/multiModuleOrder/umd.kt index f80e4cbb5dc..695720ea13a 100644 --- a/js/js.translator/testData/multiModuleOrder/umd.kt +++ b/js/js.translator/testData/multiModuleOrder/umd.kt @@ -1,3 +1,4 @@ +// SPLIT_PER_MODULE // MODULE: lib // MODULE_KIND: UMD // FILE: lib.kt