wasm gc: support running tests in gradle

This commit is contained in:
Alexey Andreev 2024-10-22 18:01:30 +02:00
parent ce862b9eaa
commit 5c743bc9a4
4 changed files with 55 additions and 4 deletions

View File

@ -25,10 +25,12 @@ import org.teavm.gradle.api.TeaVMWasmTests;
class TeaVMTestsImpl implements TeaVMTests { class TeaVMTestsImpl implements TeaVMTests {
private TeaVMJSTestsImpl js; private TeaVMJSTestsImpl js;
private TeaVMWasmTestsImpl wasm; private TeaVMWasmTestsImpl wasm;
private TeaVMWasmTestsImpl wasmGC;
TeaVMTestsImpl(ObjectFactory objectFactory) { TeaVMTestsImpl(ObjectFactory objectFactory) {
js = new TeaVMJSTestsImpl(objectFactory); js = new TeaVMJSTestsImpl(objectFactory);
wasm = new TeaVMWasmTestsImpl(objectFactory); wasm = new TeaVMWasmTestsImpl(objectFactory, "wasm");
wasmGC = new TeaVMWasmTestsImpl(objectFactory, "wasm-gc");
} }
@Override @Override
@ -61,8 +63,24 @@ class TeaVMTestsImpl implements TeaVMTests {
config.rehydrate(getWasm(), config.getOwner(), config.getThisObject()).call(); config.rehydrate(getWasm(), config.getOwner(), config.getThisObject()).call();
} }
@Override
public TeaVMWasmTests getWasmGC() {
return wasmGC;
}
@Override
public void wasmGC(Action<TeaVMWasmTests> config) {
config.execute(wasmGC);
}
@Override
public void wasmGC(Closure<?> config) {
config.rehydrate(getWasmGC(), config.getOwner(), config.getThisObject()).call();
}
void configure(TeaVMBaseExtensionImpl extension) { void configure(TeaVMBaseExtensionImpl extension) {
js.configure(extension); js.configure(extension);
wasm.configure(extension); wasm.configure(extension);
wasmGC.configure(extension);
} }
} }

View File

@ -23,10 +23,12 @@ import org.teavm.gradle.api.TeaVMWebTestRunner;
class TeaVMWasmTestsImpl implements TeaVMWasmTests { class TeaVMWasmTestsImpl implements TeaVMWasmTests {
private Property<Boolean> enabled; private Property<Boolean> enabled;
private Property<TeaVMWebTestRunner> runner; private Property<TeaVMWebTestRunner> runner;
private String name;
TeaVMWasmTestsImpl(ObjectFactory objectFactory) { TeaVMWasmTestsImpl(ObjectFactory objectFactory, String name) {
enabled = objectFactory.property(Boolean.class); enabled = objectFactory.property(Boolean.class);
runner = objectFactory.property(TeaVMWebTestRunner.class); runner = objectFactory.property(TeaVMWebTestRunner.class);
this.name = name;
} }
@Override @Override
@ -40,8 +42,9 @@ class TeaVMWasmTestsImpl implements TeaVMWasmTests {
} }
void configure(TeaVMBaseExtensionImpl extension) { void configure(TeaVMBaseExtensionImpl extension) {
enabled.convention(extension.property("tests.wasm.enabled").map(Boolean::parseBoolean).orElse(false)); enabled.convention(extension.property("tests." + name + ".enabled").map(Boolean::parseBoolean).orElse(false));
runner.convention(extension.property("tests.wasm.runner").map(s -> TeaVMWebTestRunner.valueOf(s.toUpperCase())) runner.convention(extension.property("tests." + name + ".runner")
.map(s -> TeaVMWebTestRunner.valueOf(s.toUpperCase()))
.orElse(TeaVMWebTestRunner.CHROME)); .orElse(TeaVMWebTestRunner.CHROME));
} }
} }

View File

@ -31,4 +31,10 @@ public interface TeaVMTests {
void wasm(Action<TeaVMWasmTests> config); void wasm(Action<TeaVMWasmTests> config);
void wasm(@DelegatesTo(TeaVMWasmTests.class) Closure<?> config); void wasm(@DelegatesTo(TeaVMWasmTests.class) Closure<?> config);
TeaVMWasmTests getWasmGC();
void wasmGC(Action<TeaVMWasmTests> config);
void wasmGC(@DelegatesTo(TeaVMWasmTests.class) Closure<?> config);
} }

View File

@ -0,0 +1,24 @@
/*
* Copyright 2023 Alexey Andreev.
*
* 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 org.teavm.gradle.api;
import org.gradle.api.provider.Property;
public interface TeaVMWasmGCTests {
Property<Boolean> getEnabled();
Property<TeaVMWebTestRunner> getRunner();
}