-
Notifications
You must be signed in to change notification settings - Fork 318
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Avoid Enso/Python & co. interop problems by using Truffle TCK tests #5238
Comments
Integrating Truffle TCK tests might help to prevent issues with interop, like the one mentioned in #7418 |
Tried to mimic SL diff --git build.sbt build.sbt
index abf65aec3e..a0dd0a9b8f 100644
--- build.sbt
+++ build.sbt
@@ -1507,7 +1507,11 @@ lazy val `runtime-test-instruments` =
JPMSUtils.filterModulesFromUpdate(
update.value,
GraalVM.modules ++ Seq(
- "org.netbeans.api" % "org-openide-util-lookup" % netbeansApiVersion
+ "org.graalvm.sdk" % "polyglot-tck" % graalMavenPackagesVersion,
+ "org.graalvm.truffle" % "truffle-tck" % graalMavenPackagesVersion,
+ "org.graalvm.truffle" % "truffle-tck-common" % graalMavenPackagesVersion,
+ "org.graalvm.truffle" % "truffle-tck-tests" % graalMavenPackagesVersion,
+ "org.netbeans.api" % "org-openide-util-lookup" % netbeansApiVersion
),
streams.value.log,
shouldContainAll = true
@@ -1515,6 +1519,7 @@ lazy val `runtime-test-instruments` =
},
libraryDependencies ++= GraalVM.modules,
libraryDependencies ++= Seq(
+ "org.graalvm.sdk" % "polyglot-tck" % graalMavenPackagesVersion,
"org.netbeans.api" % "org-openide-util-lookup" % netbeansApiVersion % "provided"
)
)
@@ -1557,6 +1562,12 @@ lazy val runtime = (project in file("engine/runtime"))
},
Test / parallelExecution := false,
Test / logBuffered := false,
+ Test / javaOptions ++= Seq(
+ "-Dtck.values=java-host,enso",
+ "-Dtck.language=enso",
+ "-Dtck.inlineVerifierInstrument=false",
+ "-Dpolyglot.engine.AllowExperimentalOptions=true"
+ ),
Test / testOptions += Tests.Argument(
"-oD"
), // show timings for individual tests
@@ -1569,8 +1580,9 @@ lazy val runtime = (project in file("engine/runtime"))
"org.graalvm.sdk" % "polyglot-tck" % graalMavenPackagesVersion % "provided",
"org.graalvm.truffle" % "truffle-api" % graalMavenPackagesVersion % "provided",
"org.graalvm.truffle" % "truffle-dsl-processor" % graalMavenPackagesVersion % "provided",
- "org.graalvm.truffle" % "truffle-tck" % graalMavenPackagesVersion % "provided",
- "org.graalvm.truffle" % "truffle-tck-common" % graalMavenPackagesVersion % "provided",
+ "org.graalvm.truffle" % "truffle-tck" % graalMavenPackagesVersion % Test,
+ "org.graalvm.truffle" % "truffle-tck-common" % graalMavenPackagesVersion % Test,
+ "org.graalvm.truffle" % "truffle-tck-tests" % graalMavenPackagesVersion % Test,
"org.netbeans.api" % "org-openide-util-lookup" % netbeansApiVersion % "provided",
"org.scalacheck" %% "scalacheck" % scalacheckVersion % Test,
"org.scalactic" %% "scalactic" % scalacticVersion % Test,
diff --git engine/runtime-test-instruments/src/main/java/module-info.java engine/runtime-test-instruments/src/main/java/module-info.java
index 7d3cfa8e86..6e816f6ba8 100644
--- engine/runtime-test-instruments/src/main/java/module-info.java
+++ engine/runtime-test-instruments/src/main/java/module-info.java
@@ -1,10 +1,15 @@
module org.enso.runtime.test {
requires org.graalvm.truffle;
requires org.openide.util.lookup.RELEASE180;
+ requires org.graalvm.polyglot;
+ requires org.graalvm.polyglot_tck;
exports org.enso.interpreter.test.instruments;
exports org.enso.interpreter.test.instruments.service;
+ provides org.graalvm.polyglot.tck.LanguageProvider with
+ org.enso.interpreter.test.instruments.tck.EnsoTckLanguageProvider;
+
provides com.oracle.truffle.api.instrumentation.provider.TruffleInstrumentProvider with
org.enso.interpreter.test.instruments.CodeIdsTestInstrumentProvider,
org.enso.interpreter.test.instruments.CodeLocationsTestInstrumentProvider,
diff --git engine/runtime-test-instruments/src/main/java/org/enso/interpreter/test/instruments/tck/EnsoTckLanguageProvider.java engine/runtime-test-instruments/src/main/java/org/enso/interpreter/test/instruments/tck/EnsoTckLanguageProvider.java
new file mode 100644
index 0000000000..b5dffeb78d
--- /dev/null
+++ engine/runtime-test-instruments/src/main/java/org/enso/interpreter/test/instruments/tck/EnsoTckLanguageProvider.java
@@ -0,0 +1,49 @@
+package org.enso.interpreter.test.instruments.tck;
+
+import java.util.Collection;
+
+import org.graalvm.polyglot.Context;
+import org.graalvm.polyglot.Source;
+import org.graalvm.polyglot.Value;
+import org.graalvm.polyglot.tck.LanguageProvider;
+import org.graalvm.polyglot.tck.Snippet;
+
+public class EnsoTckLanguageProvider implements LanguageProvider {
+ public EnsoTckLanguageProvider() {
+ }
+
+ @Override
+ public String getId() {
+ return "enso";
+ }
+
+ @Override
+ public Value createIdentityFunction(Context context) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Collection<? extends Snippet> createValueConstructors(Context context) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Collection<? extends Snippet> createExpressions(Context context) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Collection<? extends Snippet> createStatements(Context context) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Collection<? extends Snippet> createScripts(Context context) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+
+ @Override
+ public Collection<? extends Source> createInvalidSyntaxScripts(Context context) {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
+}
\ No newline at end of file
diff --git engine/runtime/src/test/java/org/enso/interpreter/test/tck/EnsoTckErrorTypeTest.java engine/runtime/src/test/java/org/enso/interpreter/test/tck/EnsoTckErrorTypeTest.java
new file mode 100644
index 0000000000..9879dbbecc
--- /dev/null
+++ engine/runtime/src/test/java/org/enso/interpreter/test/tck/EnsoTckErrorTypeTest.java
@@ -0,0 +1,7 @@
+package org.enso.interpreter.test.tck;
+
+public class EnsoTckErrorTypeTest extends com.oracle.truffle.tck.tests.ErrorTypeTest {
+ public EnsoTckErrorTypeTest(com.oracle.truffle.tck.tests.TestRun r) {
+ super(r);
+ }
+}
however trying: sbt:enso> runtime/testOnly *EnsoTckErrorTypeTest
Error occurred during initialization of boot layer
java.lang.module.FindException: Module org.graalvm.polyglot_tck not found, required by org.enso.runtime.test @Akirathan, can you please take a look fix my |
Jaroslav Tulach reports a new STANDUP for yesterday (2024-01-07): Progress: -
Next Day: TCK, interop & co. |
Jaroslav Tulach reports a new STANDUP for yesterday (2024-01-08): Progress: -
Next Day: TCK, interop, big decimal & bugfixes
|
Jaroslav Tulach reports a new STANDUP for yesterday (2024-01-09): Progress: - Fix CI & editions: 77deb71
Next Day: TCK, interop, big decimal & bugfixes
|
Jaroslav Tulach reports a new STANDUP for yesterday (2024-01-10): Progress: - investigating TCK failures: #8685 (comment)
Next Day: Finish TCK integration
|
Jaroslav Tulach reports a new STANDUP for yesterday (2024-01-11): Progress: - PR is finally green: #8685
Next Day: Integrate TCK, look towards BigDecimal support |
This task is automatically imported from the old Task Issue Board and it was originally created by Pavel Marek.
Original issue is here.
Truffle provides a TCK for truffle languages, which tests interoperability. We should integrate these tests in Enso.
References:
The text was updated successfully, but these errors were encountered: