From c5fcc2d56118af56e5524b044b05266c26c7eed9 Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Mon, 1 May 2023 13:24:10 +0200 Subject: [PATCH] Tests for Java 11 and Actions for Java 11 --- .classpath | 9 +- .github/workflows/build11.yml | 17 ++++ .github/workflows/{build.yml => build8.yml} | 4 +- build.gradle | 8 ++ .../jwebassembly/runtime/VarHandleTest.java | 83 +++++++++++++++++++ 5 files changed, 118 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/build11.yml rename .github/workflows/{build.yml => build8.yml} (83%) create mode 100644 test11/de/inetsoftware/jwebassembly/runtime/VarHandleTest.java diff --git a/.classpath b/.classpath index 13e21d2..751b426 100644 --- a/.classpath +++ b/.classpath @@ -14,7 +14,14 @@ - + + + + + + + + diff --git a/.github/workflows/build11.yml b/.github/workflows/build11.yml new file mode 100644 index 0000000..f7e2fe7 --- /dev/null +++ b/.github/workflows/build11.yml @@ -0,0 +1,17 @@ +name: Build with Java 11 + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: '11' + distribution: 'temurin' + - name: Build with Gradle + run: gradle build --stacktrace diff --git a/.github/workflows/build.yml b/.github/workflows/build8.yml similarity index 83% rename from .github/workflows/build.yml rename to .github/workflows/build8.yml index b5dfb5e..e12c0a4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build8.yml @@ -1,4 +1,4 @@ -name: build +name: Build with Java 8 on: [push, pull_request] @@ -12,6 +12,6 @@ jobs: uses: actions/setup-java@v3 with: java-version: '8' - distribution: 'adopt' + distribution: 'temurin' - name: Build with Gradle run: gradle build --stacktrace diff --git a/build.gradle b/build.gradle index b23bf78..0fa58a3 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,12 @@ plugins { id 'com.github.kt3k.coveralls' version '2.11.0' // Coverage } +def majorJavaVersion = JavaVersion.current().getMajorVersion() as int +if( majorJavaVersion < 11 ) { sourceCompatibility = 1.8 +} else { + sourceCompatibility = 11 +} group 'de.inetsoftware' archivesBaseName = 'jwebassembly-compiler' @@ -43,6 +48,9 @@ sourceSets { test { java { srcDir 'test' + if( majorJavaVersion >= 11 ) { + srcDir 'test11' + } } resources { srcDir 'test' diff --git a/test11/de/inetsoftware/jwebassembly/runtime/VarHandleTest.java b/test11/de/inetsoftware/jwebassembly/runtime/VarHandleTest.java new file mode 100644 index 0000000..2fcd501 --- /dev/null +++ b/test11/de/inetsoftware/jwebassembly/runtime/VarHandleTest.java @@ -0,0 +1,83 @@ +/* + * Copyright 2023 Volker Berlin (i-net software) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package de.inetsoftware.jwebassembly.runtime; + + +import java.lang.invoke.MethodHandles; +import java.lang.invoke.VarHandle; +import java.util.ArrayList; +import java.util.Collection; +import java.util.logging.Level; + +import org.junit.ClassRule; +import org.junit.runners.Parameterized.Parameters; + +import de.inetsoftware.jwebassembly.JWebAssembly; +import de.inetsoftware.jwebassembly.ScriptEngine; +import de.inetsoftware.jwebassembly.WasmRule; +import de.inetsoftware.jwebassembly.api.annotation.Export; +import de.inetsoftware.jwebassembly.web.DOMString; +import de.inetsoftware.jwebassembly.web.JSObject; + +/** + * @author Volker Berlin + */ +public class VarHandleTest extends AbstractBaseTest { + + @ClassRule + public static WasmRule rule = new WasmRule( TestClass.class ); + + public VarHandleTest( ScriptEngine script, String method, Object[] params ) { + super( rule, script, method, params ); + } + + @Parameters( name = "{0}-{1}" ) + public static Collection data() { + ArrayList list = new ArrayList<>(); + for( ScriptEngine script : ScriptEngine.testEngines() ) { + addParam( list, script, "set" ); + } + rule.setTestParameters( list ); + JWebAssembly.LOGGER.setLevel( Level.FINE ); + rule.setProperty( JWebAssembly.IGNORE_NATIVE, "true" ); + + return list; + } + + static class TestClass { + + private static final VarHandle STR; + static { + try { + MethodHandles.Lookup l = MethodHandles.lookup(); + STR = l.findVarHandle(TestData.class, "str", String.class); + } catch (ReflectiveOperationException e) { + throw new ExceptionInInitializerError(e); + } + } + + @Export + static DOMString set() { + TestData data = new TestData(); + STR.set( data, "abc" ); + return JSObject.domString( data.str ); + } + } + + static class TestData { + String str; + } +}