From 02ae4a0c44c20d3b7949d0880dee4af4e1e3873f Mon Sep 17 00:00:00 2001 From: pedro Date: Sun, 26 Nov 2023 13:51:55 +0000 Subject: [PATCH 1/4] Tests for issue #78. * Made test order fixed in JUnit to exhibit problem with issue #78. * Because there are side-effects from the order in which tests run, I've made the order fixed. For running from within Eclipse this is fine, but Maven required tweaking the config for tycho-surefire-plugin. * It seems because the new test runner uses the Eclipse RCP there is no need to manually load the RoboChart libraries from the class loader. Again, this helps to show the problem for the new test. --- .../build.properties | 3 +- .../junit-platform.properties | 1 + .../pom.xml | 5 +-- .../textual/tests/IntegrationTest.xtend | 15 ++++++++ .../textual/tests/RoboChartParsingTest.xtend | 15 +++++--- .../textual/tests/SmartParserHelper.xtend | 34 +++++++++---------- .../scoping/RoboChartScopeProvider.xtend | 1 + 7 files changed, 50 insertions(+), 24 deletions(-) create mode 100644 circus.robocalc.robochart.textual.tests/junit-platform.properties diff --git a/circus.robocalc.robochart.textual.tests/build.properties b/circus.robocalc.robochart.textual.tests/build.properties index 5c6bbf9..830f351 100755 --- a/circus.robocalc.robochart.textual.tests/build.properties +++ b/circus.robocalc.robochart.textual.tests/build.properties @@ -2,5 +2,6 @@ source.. = src/,\ src-gen/,\ xtend-gen/ bin.includes = .,\ - META-INF/ + META-INF/,\ + junit-platform.properties bin.excludes = **/*.xtend diff --git a/circus.robocalc.robochart.textual.tests/junit-platform.properties b/circus.robocalc.robochart.textual.tests/junit-platform.properties new file mode 100644 index 0000000..23acd63 --- /dev/null +++ b/circus.robocalc.robochart.textual.tests/junit-platform.properties @@ -0,0 +1 @@ +junit.jupiter.testclass.order.default=org.junit.jupiter.api.ClassOrderer$OrderAnnotation \ No newline at end of file diff --git a/circus.robocalc.robochart.textual.tests/pom.xml b/circus.robocalc.robochart.textual.tests/pom.xml index 6bc94ec..b7b48e7 100755 --- a/circus.robocalc.robochart.textual.tests/pom.xml +++ b/circus.robocalc.robochart.textual.tests/pom.xml @@ -28,14 +28,15 @@ Version Update 3.1.0 : Nov 2022 org.eclipse.xtend xtend-maven-plugin - + org.eclipse.tycho diff --git a/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/IntegrationTest.xtend b/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/IntegrationTest.xtend index bd12ff3..85edcb1 100755 --- a/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/IntegrationTest.xtend +++ b/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/IntegrationTest.xtend @@ -37,9 +37,17 @@ import org.junit.jupiter.api.^extension.ExtendWith import circus.robocalc.robochart.RCPackage import circus.robocalc.robochart.RoboChartPackage.Literals import org.eclipse.emf.ecore.EClass +import org.junit.jupiter.api.TestMethodOrder +import org.junit.jupiter.api.MethodOrderer.OrderAnnotation +import org.junit.jupiter.api.Order +import org.junit.jupiter.api.TestClassOrder +import org.junit.jupiter.api.ClassOrderer @ExtendWith(InjectionExtension) @InjectWith(RoboChartInjectorProvider) +@TestMethodOrder(OrderAnnotation) +@TestClassOrder(ClassOrderer.OrderAnnotation) +@Order(1) class IntegrationTest { // @Inject ParseHelper parseHelper @Inject extension SmartParserHelper @@ -47,6 +55,13 @@ class IntegrationTest { val top_dir = "robochart-tests/" + @Test + @Order(1) + def void testSimpleMachine() { + val dir = top_dir+"robochart/test-simple-machine" + TestRoboChartModel(dir) + } + @Test def void AlphaAlgorithm() { val dir = top_dir+"robochart/AlphaAlgorithm" diff --git a/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/RoboChartParsingTest.xtend b/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/RoboChartParsingTest.xtend index 89877ef..0211831 100755 --- a/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/RoboChartParsingTest.xtend +++ b/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/RoboChartParsingTest.xtend @@ -45,9 +45,15 @@ import org.eclipse.xtext.testing.validation.ValidationTestHelper import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test import org.junit.jupiter.api.^extension.ExtendWith +import org.eclipse.core.runtime.FileLocator +import org.junit.jupiter.api.Order +import org.junit.jupiter.api.TestClassOrder +import org.junit.jupiter.api.ClassOrderer @ExtendWith(InjectionExtension) @InjectWith(RoboChartInjectorProvider) +@TestClassOrder(ClassOrderer.OrderAnnotation) +@Order(2) class RoboChartParsingTest { @Inject extension SmartParseHelper @Inject extension ValidationTestHelper @@ -278,11 +284,12 @@ class SmartParseHelper extends ParseHelper { jar.close(); } else { // treating case where the resource files are a project in the workspace - var url = classLoader.getResource(cleanPath); + var url = classLoader.getResource("lib/robochart"); if (url === null) { - val pathInLib = if (cleanPath.startsWith("lib/")) cleanPath.replaceFirst("lib/","") else cleanPath - url = classLoader.getResource(pathInLib); + url = classLoader.getResource("robochart"); } + + url = FileLocator.toFileURL(url); val path = Paths.get(url.toURI) var Stream walk = Files.list(path); for (var Iterator it = walk.iterator(); it.hasNext();) { @@ -305,7 +312,7 @@ class SmartParseHelper extends ParseHelper { def createResourceSet() { val rs = rsp.get(); - addRoboChartLibrary(rs); + //addRoboChartLibrary(rs); return rs; } diff --git a/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/SmartParserHelper.xtend b/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/SmartParserHelper.xtend index f7c1d6e..13def21 100644 --- a/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/SmartParserHelper.xtend +++ b/circus.robocalc.robochart.textual.tests/src/circus/robocalc/robochart/textual/tests/SmartParserHelper.xtend @@ -51,29 +51,29 @@ class SmartParserHelper extends ParseHelper { jar.close(); } else { // treating case where the resource files are a project in the workspace - var url = classLoader.getResource("lib/robochart"); - if (url === null) { - url = classLoader.getResource("robochart"); - } - - url = FileLocator.toFileURL(url); - val path = Paths.get(url.toURI) - var Stream walk = Files.list(path); - for (var Iterator it = walk.iterator(); it.hasNext();) { - val p = it.next() - val is = p.toUri().toURL.openStream; - val furi = URI.createFileURI(p.toUri.toURL.path) - val r = rs.createResource(furi) - r.load(is, rs.loadOptions) - } - walk.close(); +// var url = classLoader.getResource("lib/robochart"); +// if (url === null) { +// url = classLoader.getResource("robochart"); +// } +// +// url = FileLocator.toFileURL(url); +// val path = Paths.get(url.toURI) +// var Stream walk = Files.list(path); +// for (var Iterator it = walk.iterator(); it.hasNext();) { +// val p = it.next() +// val is = p.toUri().toURL.openStream; +// val furi = URI.createFileURI(p.toUri.toURL.path) +// val r = rs.createResource(furi) +// r.load(is, rs.loadOptions) +// } +// walk.close(); } } def createResourceSet() { val rs = rsp.get(); // loading robochart libraries - loadRoboChartLibrary(rs) + //loadRoboChartLibrary(rs) return rs; } diff --git a/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend b/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend index db3d6f9..7c491f8 100644 --- a/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend +++ b/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend @@ -227,6 +227,7 @@ class RoboChartScopeProvider extends AbstractRoboChartScopeProvider { return scope } } else if (context instanceof Transition) { + delegateGetScope(context, reference) val r = IScope::NULLSCOPE if (reference === TRANSITION__SOURCE) { if (context.eContainer instanceof NodeContainer) { From 99b3e30c8c043c16aa49208fad875d9eeb16a05e Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Sun, 26 Nov 2023 13:53:23 +0000 Subject: [PATCH 2/4] Update test submodule. --- circus.robocalc.robochart.textual.tests/robochart-tests | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circus.robocalc.robochart.textual.tests/robochart-tests b/circus.robocalc.robochart.textual.tests/robochart-tests index b77c301..7cddcda 160000 --- a/circus.robocalc.robochart.textual.tests/robochart-tests +++ b/circus.robocalc.robochart.textual.tests/robochart-tests @@ -1 +1 @@ -Subproject commit b77c3013a1eb5883db3614208a56a6c30bbe7549 +Subproject commit 7cddcda64b1e6755a68f4fa559cba8c3df3a0d63 From f9cf7f2f890d5f5d9b8462df33847e540b75424b Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Sun, 26 Nov 2023 13:57:15 +0000 Subject: [PATCH 3/4] Re-introduce issue to double-check GA build fails on purpose. --- .../robochart/textual/scoping/RoboChartScopeProvider.xtend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend b/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend index 7c491f8..7ca1f34 100644 --- a/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend +++ b/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend @@ -227,7 +227,7 @@ class RoboChartScopeProvider extends AbstractRoboChartScopeProvider { return scope } } else if (context instanceof Transition) { - delegateGetScope(context, reference) + //delegateGetScope(context, reference) val r = IScope::NULLSCOPE if (reference === TRANSITION__SOURCE) { if (context.eContainer instanceof NodeContainer) { From 333d3a0992029dc00aaa0251c662e2df08f7be6f Mon Sep 17 00:00:00 2001 From: Pedro Ribeiro Date: Sun, 26 Nov 2023 14:02:54 +0000 Subject: [PATCH 4/4] Re-instate fix in scope provider for issue #78. --- .../robochart/textual/scoping/RoboChartScopeProvider.xtend | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend b/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend index 7ca1f34..7c491f8 100644 --- a/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend +++ b/circus.robocalc.robochart.textual/src/circus/robocalc/robochart/textual/scoping/RoboChartScopeProvider.xtend @@ -227,7 +227,7 @@ class RoboChartScopeProvider extends AbstractRoboChartScopeProvider { return scope } } else if (context instanceof Transition) { - //delegateGetScope(context, reference) + delegateGetScope(context, reference) val r = IScope::NULLSCOPE if (reference === TRANSITION__SOURCE) { if (context.eContainer instanceof NodeContainer) {