From 3b5cd58d3a97916dd05a4eee11e647f1c0a46248 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Wed, 22 Apr 2026 16:21:29 +0200 Subject: [PATCH 01/12] Enahnce Scoping & test setup (#1759) --- .../models/behavior.mps | 284 +++++++++++++++++- .../org.iets3.opensource.build.gentests.mpl | 2 + .../opensource/allScripts/build/build.mps | 7 +- .../org/iets3/opensource/build/build.mps | 202 ++++++++++++- 4 files changed, 473 insertions(+), 22 deletions(-) diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps index bb49288214..a6458e2dfc 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps @@ -15,6 +15,7 @@ + @@ -48,6 +49,7 @@ + @@ -74,6 +76,9 @@ + + + @@ -88,6 +93,7 @@ + @@ -118,10 +124,12 @@ + + @@ -145,6 +153,13 @@ + + + + + + + @@ -174,6 +189,9 @@ + + + @@ -205,6 +223,12 @@ + + + + + + @@ -222,6 +246,17 @@ + + + + + + + + + + + @@ -1001,30 +1036,140 @@ - - - - - - - - - - + + + + + + + + + + + - - - + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1038,6 +1183,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/org.iets3.opensource.build.gentests.mpl b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/org.iets3.opensource.build.gentests.mpl index e6e181d163..98e1530d3b 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/org.iets3.opensource.build.gentests.mpl +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/org.iets3.opensource.build.gentests.mpl @@ -88,6 +88,7 @@ 2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel) 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK) 427a473d-5177-432c-9905-bcbceb71b996(jetbrains.mps.build.mps.runner) + c7a315e6-1d93-4186-85bc-2dfafd1ccc21(com.mbeddr.mpsutil.common) @@ -129,6 +130,7 @@ + diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps index 4201b2af74..c90088703a 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps @@ -89,7 +89,6 @@ - @@ -399,12 +398,16 @@ + + + + + - diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index 09b4b7b759..94f7c10cdb 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -4403,11 +4403,6 @@ - - - - - @@ -4428,6 +4423,11 @@ + + + + + @@ -15661,6 +15661,11 @@ + + + + + @@ -18957,5 +18962,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4f4317ee03c00830894be447a0001379dfbe54ba Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 23 Apr 2026 09:45:33 +0200 Subject: [PATCH 02/12] Alternative Interpreter Junit cmd run (#1759) --- .../models/org/iets3/opensource/build/build.mps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index 94f7c10cdb..cac6092b2e 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -18967,7 +18967,7 @@ - + From 6301a0301820bb328b4a671cb523df1b5e32d109 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 23 Apr 2026 10:59:01 +0200 Subject: [PATCH 03/12] Clean build solution (#1759) --- build-allScripts.xml | 6 + .../org/iets3/opensource/build/build.mps | 111 +----------------- 2 files changed, 8 insertions(+), 109 deletions(-) diff --git a/build-allScripts.xml b/build-allScripts.xml index b222bb2a39..df42d7246c 100644 --- a/build-allScripts.xml +++ b/build-allScripts.xml @@ -124,10 +124,15 @@ + + + + + @@ -222,6 +227,7 @@ + diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index cac6092b2e..15c2830005 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -18692,75 +18692,9 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -18818,36 +18752,13 @@ - - - - - - - - - - - - - - - + + - - - - - - - - - - @@ -18943,24 +18854,6 @@ - - - - - - - - - - - - - - - - - - From 9c21168b93b2bc9ba2d352b6879e5b3db6de387b Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 23 Apr 2026 12:05:48 +0200 Subject: [PATCH 04/12] Resolve Reference (#1759) --- .../models/org/iets3/opensource/build/build.mps | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index 15c2830005..89fed6cde7 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -18919,7 +18919,7 @@ - + From 998d901e43d6b861ce3525aa8001ec4f1d12c343 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Wed, 24 Jun 2026 15:19:25 +0200 Subject: [PATCH 05/12] Add gradle task for merging (#1759) Merges files build-testInterpreter.xml & build-testInterpreter2.xml Purpose is to get a working ant file from both to run InterpreterTests --- build.gradle.kts | 96 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 95 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2be7b096b6..c658653146 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -177,8 +177,102 @@ val buildLanguages by tasks.registering(BuildLanguages::class) { script = scriptsDir.file("build-languages.xml") } +val mergeTestInterpreterXml by tasks.registering { + dependsOn(buildAllScripts) + val xmlaFile = scriptsDir.file("build-testInterpreter.xml") + val xmlbFile = scriptsDir.file("build-testInterpreter2.xml") + val outFile = scriptsDir.file("build-combined.xml") + inputs.files(xmlaFile, xmlbFile) + outputs.file(outFile) + + doLast { + fun deepCopy(src: Node, parent: Node?): Node { + @Suppress("UNCHECKED_CAST") + val copy = Node(parent, src.name(), LinkedHashMap(src.attributes() as Map)) + for (child in src.children()) { + if (child is Node) deepCopy(child, copy) + else (copy.value() as NodeList).add(child.toString()) + } + return copy + } + fun Node.childrenNamed(name: String) = + children().filterIsInstance().filter { it.name().toString() == name } + fun Node.indexedTargets() = + childrenNamed("target").associateBy { it.attribute("name") as String } + + val parser = groovy.xml.XmlParser(false, false) + val xmla = parser.parse(xmlaFile.asFile) + val xmlb = parser.parse(xmlbFile.asFile) + + val targetsA = xmla.indexedTargets() + val targetsB = xmlb.indexedTargets() + + val extraPropNames = listOf( + "build.mps.config.path", "build.mps.system.path", "dependencies.root", + "iets3.interpreterExecutor.genPath", "mps.macro.iets3.github.opensource.home", + "artifacts.org.iets3.opensource.interpreter.testExecutor", "artifacts.com.mbeddr.platform" + ) + val propsB = xmlb.childrenNamed("property").associateBy { it.attribute("name") as String? } + val extraProps = extraPropNames.mapNotNull { propsB[it] } + + val root = Node(null, "project", mapOf("name" to xmlb.attribute("name"), "default" to "build")) + + // Properties: all from XMLa; inject XMLb extras after 'iets3.artifacts.root' + xmla.childrenNamed("property").forEach { prop -> + deepCopy(prop, root) + if (prop.attribute("name") == "iets3.artifacts.root") { + extraProps.forEach { deepCopy(it, root) } + } + } + + // Infrastructure: path, taskdef, generator-settings from XMLa only + xmla.childrenNamed("path").forEach { deepCopy(it, root) } + xmla.childrenNamed("taskdef").forEach { deepCopy(it, root) } + xmla.childrenNamed("generator-settings").forEach { deepCopy(it, root) } + + // assemble from XMLb, depends extended to include 'classes' + val assembleTarget = deepCopy(targetsB["assemble"]!!, root) + assembleTarget.attributes()["depends"] = "classes, declare-mps-tasks" + + Node(root, "target", mapOf("name" to "buildDependents")) + deepCopy(targetsA["fetchDependencies"]!!, root) + Node(root, "target", mapOf("name" to "build", "depends" to "assemble, run-mps-code")) + deepCopy(targetsB["clean"]!!, root) + deepCopy(targetsA["compileJava"]!!, root) + deepCopy(targetsA["processResources"]!!, root) + deepCopy(targetsA["classes"]!!, root) + deepCopy(targetsA["test"]!!, root) + deepCopy(targetsA["check"]!!, root) + + // generate from XMLa (full MPS plugin list; XMLb's generate target is empty) + deepCopy(targetsA["generate"]!!, root) + deepCopy(targetsA["declare-mps-tasks"]!!, root) + deepCopy(targetsA["makeDependents"]!!, root) + deepCopy(targetsA["java.compile.org.iets3.opensource.interpreterExecutor"]!!, root) + deepCopy(targetsA["cleanSources"]!!, root) + deepCopy(targetsB["run-mps-code"]!!, root) + + // run.* from XMLb — update interpreterExecutor.jar library to use combined build.layout + val runTarget = deepCopy(targetsB["run.org.iets3.opensource.interpreterExecutor"]!!, root) + runTarget.childrenNamed("runMPS") + .flatMap { it.childrenNamed("library") } + .filter { (it.attribute("file") as String?)?.contains("artifacts.org.iets3.opensource.interpreter.testExecutor") == true } + .forEach { lib -> + lib.attributes()["file"] = + "\${build.layout}/org.iets3.opensource.interpreterExecutor/languages/iets3.opensource.interpreterExecutor/org.iets3.opensource.interpreterExecutor.jar" + } + + val pw = java.io.PrintWriter(outFile.asFile) + pw.println("") + groovy.xml.XmlNodePrinter(pw, " ").print(root) + pw.close() + logger.lifecycle("Combined XML written to: ${outFile.asFile}") + } +} + val execTestsByInterpreter by tasks.registering(TestLanguages::class) { - script = scriptsDir.file("build-testInterpreter.xml") + dependsOn(mergeTestInterpreterXml) + script = scriptsDir.file("build-combined.xml") targets("generate", "build") doLast { // there is limited ant support for kotlin so we fall back to groovy From 1434f66d995c54087253357bd50e986da3704305 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Wed, 24 Jun 2026 16:06:08 +0200 Subject: [PATCH 06/12] Force Save All (#1759) --- .../models/behavior.mps | 8 ++++---- .../models/org/iets3/opensource/build/build.mps | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps index a6458e2dfc..eee0ab0394 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/behavior.mps @@ -1138,7 +1138,7 @@ - + @@ -1151,7 +1151,7 @@ - + @@ -1167,7 +1167,7 @@ - + @@ -1224,7 +1224,7 @@ - + diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index 6cada958d3..f8516ab61c 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -18999,7 +18999,7 @@ - + @@ -19085,7 +19085,7 @@ - + From eaaf03ba412c2b5469ffeab3d83879b682002d32 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 25 Jun 2026 11:20:19 +0200 Subject: [PATCH 07/12] TEMP (#1759) --- build.gradle.kts | 10 +- .../org/iets3/opensource/build/build.mps | 119 ++++++++++++------ 2 files changed, 87 insertions(+), 42 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index c658653146..93249b2e28 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -270,9 +270,15 @@ val mergeTestInterpreterXml by tasks.registering { } } +val yInterpreter by tasks.registering(TestLanguages::class) { + script = scriptsDir.file("build-testInterpreter.xml") + targets("generate", "build") + +} + val execTestsByInterpreter by tasks.registering(TestLanguages::class) { - dependsOn(mergeTestInterpreterXml) - script = scriptsDir.file("build-combined.xml") + dependsOn(yInterpreter) + script = scriptsDir.file("build-testInterpreter2.xml") targets("generate", "build") doLast { // there is limited ant support for kotlin so we fall back to groovy diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index f8516ab61c..f4ed4644a6 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -18831,11 +18831,21 @@ - - + + + + + + + + + + + + @@ -18845,6 +18855,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -18931,44 +18974,42 @@ - - - - - - - - - - - - - - - + + + + + + + + + - - - + + + + + + + + + + - - - - - - - - - - - - - - + + + + + + + + + + + @@ -19083,12 +19124,7 @@ - - - - - - + @@ -19116,6 +19152,9 @@ + + + From bcc67a5c45d04b3b536ce9dd6304ced5f58d233d Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 25 Jun 2026 12:20:04 +0200 Subject: [PATCH 08/12] fix gradle task 'execTestsByInterpreter' (#1759) --- ...uild.gentests.generator.main@generator.mps | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps index 4cac98f536..aae2b73f35 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps @@ -2704,6 +2704,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 9d7e8f00937e8d1b4b9d34616fdd8ea575ce32b6 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 25 Jun 2026 13:34:30 +0200 Subject: [PATCH 09/12] code clean up (#1759) --- build.gradle.kts | 100 +----------------- ...uild.gentests.generator.main@generator.mps | 16 +++ .../org/iets3/opensource/build/build.mps | 4 +- 3 files changed, 21 insertions(+), 99 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 93249b2e28..f2f215c56e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -177,108 +177,14 @@ val buildLanguages by tasks.registering(BuildLanguages::class) { script = scriptsDir.file("build-languages.xml") } -val mergeTestInterpreterXml by tasks.registering { - dependsOn(buildAllScripts) - val xmlaFile = scriptsDir.file("build-testInterpreter.xml") - val xmlbFile = scriptsDir.file("build-testInterpreter2.xml") - val outFile = scriptsDir.file("build-combined.xml") - inputs.files(xmlaFile, xmlbFile) - outputs.file(outFile) - - doLast { - fun deepCopy(src: Node, parent: Node?): Node { - @Suppress("UNCHECKED_CAST") - val copy = Node(parent, src.name(), LinkedHashMap(src.attributes() as Map)) - for (child in src.children()) { - if (child is Node) deepCopy(child, copy) - else (copy.value() as NodeList).add(child.toString()) - } - return copy - } - fun Node.childrenNamed(name: String) = - children().filterIsInstance().filter { it.name().toString() == name } - fun Node.indexedTargets() = - childrenNamed("target").associateBy { it.attribute("name") as String } - - val parser = groovy.xml.XmlParser(false, false) - val xmla = parser.parse(xmlaFile.asFile) - val xmlb = parser.parse(xmlbFile.asFile) - - val targetsA = xmla.indexedTargets() - val targetsB = xmlb.indexedTargets() - - val extraPropNames = listOf( - "build.mps.config.path", "build.mps.system.path", "dependencies.root", - "iets3.interpreterExecutor.genPath", "mps.macro.iets3.github.opensource.home", - "artifacts.org.iets3.opensource.interpreter.testExecutor", "artifacts.com.mbeddr.platform" - ) - val propsB = xmlb.childrenNamed("property").associateBy { it.attribute("name") as String? } - val extraProps = extraPropNames.mapNotNull { propsB[it] } - - val root = Node(null, "project", mapOf("name" to xmlb.attribute("name"), "default" to "build")) - - // Properties: all from XMLa; inject XMLb extras after 'iets3.artifacts.root' - xmla.childrenNamed("property").forEach { prop -> - deepCopy(prop, root) - if (prop.attribute("name") == "iets3.artifacts.root") { - extraProps.forEach { deepCopy(it, root) } - } - } - - // Infrastructure: path, taskdef, generator-settings from XMLa only - xmla.childrenNamed("path").forEach { deepCopy(it, root) } - xmla.childrenNamed("taskdef").forEach { deepCopy(it, root) } - xmla.childrenNamed("generator-settings").forEach { deepCopy(it, root) } - - // assemble from XMLb, depends extended to include 'classes' - val assembleTarget = deepCopy(targetsB["assemble"]!!, root) - assembleTarget.attributes()["depends"] = "classes, declare-mps-tasks" - - Node(root, "target", mapOf("name" to "buildDependents")) - deepCopy(targetsA["fetchDependencies"]!!, root) - Node(root, "target", mapOf("name" to "build", "depends" to "assemble, run-mps-code")) - deepCopy(targetsB["clean"]!!, root) - deepCopy(targetsA["compileJava"]!!, root) - deepCopy(targetsA["processResources"]!!, root) - deepCopy(targetsA["classes"]!!, root) - deepCopy(targetsA["test"]!!, root) - deepCopy(targetsA["check"]!!, root) - - // generate from XMLa (full MPS plugin list; XMLb's generate target is empty) - deepCopy(targetsA["generate"]!!, root) - deepCopy(targetsA["declare-mps-tasks"]!!, root) - deepCopy(targetsA["makeDependents"]!!, root) - deepCopy(targetsA["java.compile.org.iets3.opensource.interpreterExecutor"]!!, root) - deepCopy(targetsA["cleanSources"]!!, root) - deepCopy(targetsB["run-mps-code"]!!, root) - - // run.* from XMLb — update interpreterExecutor.jar library to use combined build.layout - val runTarget = deepCopy(targetsB["run.org.iets3.opensource.interpreterExecutor"]!!, root) - runTarget.childrenNamed("runMPS") - .flatMap { it.childrenNamed("library") } - .filter { (it.attribute("file") as String?)?.contains("artifacts.org.iets3.opensource.interpreter.testExecutor") == true } - .forEach { lib -> - lib.attributes()["file"] = - "\${build.layout}/org.iets3.opensource.interpreterExecutor/languages/iets3.opensource.interpreterExecutor/org.iets3.opensource.interpreterExecutor.jar" - } - - val pw = java.io.PrintWriter(outFile.asFile) - pw.println("") - groovy.xml.XmlNodePrinter(pw, " ").print(root) - pw.close() - logger.lifecycle("Combined XML written to: ${outFile.asFile}") - } -} - -val yInterpreter by tasks.registering(TestLanguages::class) { +val execTestsByInterpreterPre by tasks.registering(TestLanguages::class) { script = scriptsDir.file("build-testInterpreter.xml") targets("generate", "build") - } val execTestsByInterpreter by tasks.registering(TestLanguages::class) { - dependsOn(yInterpreter) - script = scriptsDir.file("build-testInterpreter2.xml") + dependsOn(execTestsByInterpreterPre) + script = scriptsDir.file("build-testInterpreterExec.xml") targets("generate", "build") doLast { // there is limited ant support for kotlin so we fall back to groovy diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps index aae2b73f35..93c57e60b2 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps @@ -156,6 +156,9 @@ + + + @@ -166,6 +169,9 @@ + + + @@ -317,6 +323,7 @@ + @@ -2705,8 +2712,17 @@ + + + + + + + + + diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps index f4ed4644a6..bcca0317e4 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.build/models/org/iets3/opensource/build/build.mps @@ -19007,8 +19007,8 @@ - - + + From 32d5ca3536c4f9319fead76bf2b4c794dff9eae8 Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 25 Jun 2026 14:03:09 +0200 Subject: [PATCH 10/12] update CHANGELOG.md (#1759) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c70a52755..22e43ddaeb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,10 @@ The project does _not_ follow Semantic Versioning and the changes are documented - Variability: Introduced extension point `configCombinationLogicExtPoint` (interface `IConfigCombinationLogic`) to make the logic of combining configurations (via `extends`, `abstract` and referenced sub-configurations) configurable per application. - Variability: Configuration checking for referenced abstract sub-configurations now respects the active combination logic, and configuration hashing was extended to cover a configuration together with all configurations reachable from it. +### Changed + +- CLI interpreter: Relaxed the reference scope of `CustomRunnerAspect` so it can reference `BuildMps_Solution`s outside its containing root, allowing a proper MPS build to be composed for command-line interpreter test runs. The generator was adapted accordingly, so the `execTestsByInterpreter` Gradle task works end-to-end again. + ## May 2026 From ee91f603f23d70be37e6736682ab0f37c08f79db Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 25 Jun 2026 14:48:27 +0200 Subject: [PATCH 11/12] fix build solution (#1759) --- ...ts3.opensource.build.gentests.generator.main@generator.mps | 1 - .../org.iets3.opensource.build.gentests/models/typesystem.mps | 1 - .../models/org/iets3/opensource/allScripts/build/build.mps | 4 ++-- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps index 93c57e60b2..40f0698036 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/generator/template/org.iets3.opensource.build.gentests.generator.main@generator.mps @@ -22,7 +22,6 @@ - diff --git a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/typesystem.mps b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/typesystem.mps index fa1a7c590b..0a5e77712a 100644 --- a/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/typesystem.mps +++ b/code/languages/org.iets3.opensource/languages/org.iets3.opensource.build.gentests/models/typesystem.mps @@ -6,7 +6,6 @@ - diff --git a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps index c90088703a..ab3a49ee38 100644 --- a/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps +++ b/code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps @@ -398,8 +398,8 @@ - - + + From de50a5428ce4f5a7a1b1f522e57046798e07bf0a Mon Sep 17 00:00:00 2001 From: dbinkele Date: Thu, 25 Jun 2026 14:58:37 +0200 Subject: [PATCH 12/12] Make url to interpreterTest summary clickable (#1759) --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 0306a72354..39ca6c4406 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -202,7 +202,7 @@ val execTestsByInterpreter by tasks.registering(TestLanguages::class) { ) "report"("format" to "frames", "todir" to "${layout.buildDirectory.get()}/junitInterpreterReport") } - "echo"("JUnit Interpreter report placed into ${layout.buildDirectory.get()}/junitInterpreterReport/index.html") + "echo"("JUnit Interpreter report placed into file://${layout.buildDirectory.get()}/junitInterpreterReport/index.html") } } }