mirror of
https://github.com/mii443/wasmer.git
synced 2025-08-28 11:19:25 +00:00
Separate testing per compiler
This commit is contained in:
12
Cargo.toml
12
Cargo.toml
@ -65,6 +65,7 @@ anyhow = "1.0"
|
||||
blake3 = "0.3"
|
||||
lazy_static = "1.4"
|
||||
test-utils = { path = "tests/lib/test-utils" }
|
||||
# test-macros = { path = "tests/lib/test-macros" }
|
||||
wasmer-engine-dummy = { path = "tests/lib/engine-dummy" }
|
||||
|
||||
[features]
|
||||
@ -106,5 +107,16 @@ llvm = [
|
||||
"compiler",
|
||||
]
|
||||
|
||||
# Testing features
|
||||
test-singlepass = [
|
||||
"singlepass",
|
||||
]
|
||||
test-cranelift = [
|
||||
"cranelift",
|
||||
]
|
||||
test-llvm = [
|
||||
"llvm",
|
||||
]
|
||||
|
||||
# [profile.release]
|
||||
# lto = "fat"
|
||||
|
17
Makefile
17
Makefile
@ -93,8 +93,21 @@ build-capi-llvm:
|
||||
# Testing #
|
||||
###########
|
||||
|
||||
test:
|
||||
cargo test --release $(compiler_features)
|
||||
test: $(foreach compiler,$(compilers),test-$(compiler)) test-packages
|
||||
|
||||
test-singlepass:
|
||||
cargo test --release $(compiler_features) --features "test-singlepass"
|
||||
|
||||
test-cranelift:
|
||||
cargo test --release $(compiler_features) --features "test-cranelift"
|
||||
|
||||
test-llvm:
|
||||
cargo test --release $(compiler_features) --features "test-llvm"
|
||||
|
||||
test-packages:
|
||||
cargo test -p wasmer --release
|
||||
cargo test -p wasmer-runtime --release
|
||||
cargo test -p wasm-common --release
|
||||
|
||||
test-capi-singlepass: build-capi-singlepass
|
||||
cargo test --manifest-path lib/c-api/Cargo.toml --release \
|
||||
|
@ -2,10 +2,10 @@
|
||||
//! This tests checks that the provided functions (both native and
|
||||
//! dynamic ones) work properly.
|
||||
|
||||
wasmer_compilers! {
|
||||
use wasmer::*;
|
||||
use crate::utils::get_store;
|
||||
use anyhow::Result;
|
||||
use std::sync::atomic::{AtomicUsize, Ordering::SeqCst};
|
||||
use wasmer::*;
|
||||
|
||||
fn get_module(store: &Store) -> Result<Module> {
|
||||
let wat = r#"
|
||||
@ -77,7 +77,6 @@ wasmer_compilers! {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
||||
#[test]
|
||||
fn dynamic_function_with_env() -> Result<()> {
|
||||
let store = get_store();
|
||||
@ -194,4 +193,3 @@ wasmer_compilers! {
|
||||
assert_eq!(env.load(SeqCst), 4);
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@ -1,66 +0,0 @@
|
||||
#[macro_export]
|
||||
macro_rules! wasmer_compilers {
|
||||
{ $($code:item)* } => {
|
||||
#[cfg(feature = "singlepass")]
|
||||
#[cfg(test)]
|
||||
mod singlepass {
|
||||
use std::sync::Arc;
|
||||
use wasmer::{Features, Store, Tunables};
|
||||
use wasmer_engine_jit::JITEngine;
|
||||
use test_utils::get_compiler_config_from_str;
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn get_store() -> Store {
|
||||
let features = Features::default();
|
||||
let try_nan_canonicalization = false;
|
||||
let compiler_config =
|
||||
get_compiler_config_from_str("singlepass", try_nan_canonicalization, features);
|
||||
let tunables = Tunables::for_target(compiler_config.target().triple());
|
||||
let store = Store::new(Arc::new(JITEngine::new(compiler_config, tunables)));
|
||||
store
|
||||
}
|
||||
$($code)*
|
||||
}
|
||||
|
||||
#[cfg(feature = "cranelift")]
|
||||
#[cfg(test)]
|
||||
mod cranelift {
|
||||
use std::sync::Arc;
|
||||
use wasmer::{Features, Store, Tunables};
|
||||
use wasmer_engine_jit::JITEngine;
|
||||
use test_utils::get_compiler_config_from_str;
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn get_store() -> Store {
|
||||
let features = Features::default();
|
||||
let try_nan_canonicalization = false;
|
||||
let compiler_config =
|
||||
get_compiler_config_from_str("cranelift", try_nan_canonicalization, features);
|
||||
let tunables = Tunables::for_target(compiler_config.target().triple());
|
||||
let store = Store::new(Arc::new(JITEngine::new(compiler_config, tunables)));
|
||||
store
|
||||
}
|
||||
$($code)*
|
||||
}
|
||||
#[cfg(feature = "llvm")]
|
||||
#[cfg(test)]
|
||||
mod llvm {
|
||||
use std::sync::Arc;
|
||||
use wasmer::{Features, Store, Tunables};
|
||||
use wasmer_engine_jit::JITEngine;
|
||||
use test_utils::get_compiler_config_from_str;
|
||||
|
||||
#[allow(dead_code)]
|
||||
fn get_store() -> Store {
|
||||
let features = Features::default();
|
||||
let try_nan_canonicalization = false;
|
||||
let compiler_config =
|
||||
get_compiler_config_from_str("llvm", try_nan_canonicalization, features);
|
||||
let tunables = Tunables::for_target(compiler_config.target().triple());
|
||||
let store = Store::new(Arc::new(JITEngine::new(compiler_config, tunables)));
|
||||
store
|
||||
}
|
||||
$($code)*
|
||||
}
|
||||
};
|
||||
}
|
@ -2,11 +2,7 @@
|
||||
//! implementation, such as: singlepass, cranelift or llvm depending
|
||||
//! on what's available on the target.
|
||||
|
||||
#[macro_use]
|
||||
mod macros;
|
||||
mod imports;
|
||||
mod multi_value_imports;
|
||||
mod traps;
|
||||
mod wast;
|
||||
#[macro_use]
|
||||
extern crate lazy_static;
|
||||
mod utils;
|
||||
|
@ -2,185 +2,8 @@
|
||||
//! This tests checks that the provided functions (both native and
|
||||
//! dynamic ones) work properly.
|
||||
|
||||
use std::collections::HashSet;
|
||||
|
||||
// These tests are skipped because they are known failing.
|
||||
lazy_static! {
|
||||
static ref SKIP_TESTS: HashSet<&'static str> = [
|
||||
// https://github.com/bytecodealliance/wasmtime/issues/1178
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_f64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f32_i64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_f64_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_f64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i32_i64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i64_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f32_i64_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f64_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f64_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f64_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_f64_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_f32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_f32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_f32_f64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_f64_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_f64_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_f64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i32_i64::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i64_f32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i32_i64_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i64_f32_i32::native")),
|
||||
(concat!(module_path!(), "::cranelift::test_mvr_i64_i32_i32::native")),
|
||||
|
||||
// Multi-value is not implemented in singlepass yet.
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_f64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f32_i64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f64_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f64_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f64_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_f64_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_f64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i32_i64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i64_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i64_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i64_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f32_i64_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_f64_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_f64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f32_i64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f64_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f64_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f64_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_f64_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_f64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i32_i32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i32_i64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i64::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i64::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i64_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i64_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i64_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i32_i64_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_f32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_f32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_f32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_f32_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_i32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_i32_f32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_i32_f32::native")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_i32_i32::dynamic")),
|
||||
(concat!(module_path!(), "::singlepass::test_mvr_i64_i32_i32::native")),
|
||||
]
|
||||
.iter()
|
||||
.copied()
|
||||
.collect();
|
||||
}
|
||||
use crate::utils::get_store;
|
||||
use wasmer::*;
|
||||
|
||||
macro_rules! mvr_test {
|
||||
($test_name:ident, $( $result_type:ty ),* ) => {
|
||||
@ -214,13 +37,8 @@ macro_rules! mvr_test {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(any(feature = "test-cranelift", feature="test-singlepass"), ignore)]
|
||||
fn native() -> anyhow::Result<()> {
|
||||
dbg!(concat!(module_path!(), "::native"));
|
||||
if crate::multi_value_imports::SKIP_TESTS.contains(concat!(module_path!(), "::native")) {
|
||||
println!("skipped");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let store = get_store();
|
||||
let module = get_module(&store)?;
|
||||
let instance = wasmer::Instance::new(
|
||||
@ -245,12 +63,8 @@ macro_rules! mvr_test {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(feature="test-singlepass", ignore)]
|
||||
fn dynamic() -> anyhow::Result<()> {
|
||||
if crate::multi_value_imports::SKIP_TESTS.contains(concat!(module_path!(), "::dynamic")) {
|
||||
println!("skipped");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let store = get_store();
|
||||
let module = get_module(&store)?;
|
||||
let instance = wasmer::Instance::new(
|
||||
@ -272,7 +86,6 @@ macro_rules! mvr_test {
|
||||
}
|
||||
}
|
||||
|
||||
wasmer_compilers! {
|
||||
trait ExpectedExpr {
|
||||
fn expected_value(n: i32) -> Self;
|
||||
fn expected_val(n: i32) -> wasmer::Val;
|
||||
@ -392,4 +205,3 @@ wasmer_compilers! {
|
||||
mvr_test!(test_mvr_f32_f32_f32_f32, f32, f32, f32, f32);
|
||||
|
||||
mvr_test!(test_mvr_i32_i32_i32_i32_i32, i32, i32, i32, i32, i32);
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
wasmer_compilers! {
|
||||
use crate::utils::get_store;
|
||||
use anyhow::Result;
|
||||
use std::panic::{self, AssertUnwindSafe};
|
||||
use wasmer::*;
|
||||
@ -39,7 +39,7 @@ wasmer_compilers! {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
#[cfg_attr(any(feature = "test-singlepass", feature = "test-llvm"), ignore)]
|
||||
fn test_trap_trace() -> Result<()> {
|
||||
let store = get_store();
|
||||
let wat = r#"
|
||||
@ -119,6 +119,7 @@ wasmer_compilers! {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[cfg_attr(any(feature = "test-singlepass", feature = "test-llvm"), ignore)]
|
||||
fn test_trap_stack_overflow() -> Result<()> {
|
||||
let store = get_store();
|
||||
let wat = r#"
|
||||
@ -137,7 +138,7 @@ wasmer_compilers! {
|
||||
let e = run_func.call(&[]).err().expect("error calling function");
|
||||
|
||||
let trace = e.trace();
|
||||
// assert!(trace.len() >= 32);
|
||||
assert!(trace.len() >= 32);
|
||||
for i in 0..trace.len() {
|
||||
assert_eq!(trace[i].module_name(), "rec_mod");
|
||||
assert_eq!(trace[i].func_index(), 0);
|
||||
@ -149,7 +150,7 @@ wasmer_compilers! {
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
#[cfg_attr(any(feature = "test-singlepass", feature = "test-llvm"), ignore)]
|
||||
fn trap_display_pretty() -> Result<()> {
|
||||
let store = get_store();
|
||||
let wat = r#"
|
||||
@ -182,7 +183,7 @@ RuntimeError: unreachable
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
#[cfg_attr(any(feature = "test-singlepass", feature = "test-llvm"), ignore)]
|
||||
fn trap_display_multi_module() -> Result<()> {
|
||||
let store = get_store();
|
||||
let wat = r#"
|
||||
@ -387,7 +388,7 @@ RuntimeError: unreachable
|
||||
}
|
||||
|
||||
#[test]
|
||||
#[ignore]
|
||||
#[cfg_attr(any(feature = "test-singlepass", feature = "test-llvm"), ignore)]
|
||||
fn call_signature_mismatch() -> Result<()> {
|
||||
let store = get_store();
|
||||
let binary = r#"
|
||||
@ -418,7 +419,7 @@ RuntimeError: indirect call type mismatch
|
||||
}
|
||||
|
||||
#[ignore]
|
||||
#[test]
|
||||
#[cfg_attr(any(feature = "test-singlepass", feature = "test-llvm"), ignore)]
|
||||
fn start_trap_pretty() -> Result<()> {
|
||||
let store = get_store();
|
||||
let wat = r#"
|
||||
@ -470,4 +471,3 @@ RuntimeError: unreachable
|
||||
// assert_eq!(t.trace()[0].func_index(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
29
tests/compilers/utils.rs
Normal file
29
tests/compilers/utils.rs
Normal file
@ -0,0 +1,29 @@
|
||||
use std::sync::Arc;
|
||||
use test_utils::get_compiler_config_from_str;
|
||||
use wasmer::{Features, Store, Tunables};
|
||||
use wasmer_engine_jit::JITEngine;
|
||||
|
||||
fn get_compiler_str() -> &'static str {
|
||||
cfg_if::cfg_if! {
|
||||
if #[cfg(feature = "test-cranelift")] {
|
||||
"cranelift"
|
||||
} else if #[cfg(feature = "test-llvm")] {
|
||||
"llvm"
|
||||
} else if #[cfg(feature = "test-singlepass")] {
|
||||
"singlepass"
|
||||
}
|
||||
else {
|
||||
compile_error!("No compiler chosen for the tests")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn get_store() -> Store {
|
||||
let features = Features::default();
|
||||
let try_nan_canonicalization = false;
|
||||
let compiler_config =
|
||||
get_compiler_config_from_str(get_compiler_str(), try_nan_canonicalization, features);
|
||||
let tunables = Tunables::for_target(compiler_config.target().triple());
|
||||
let store = Store::new(Arc::new(JITEngine::new(compiler_config, tunables)));
|
||||
store
|
||||
}
|
@ -169,7 +169,7 @@ pub fn with_features(
|
||||
f: impl Fn(&mut Testsuite) -> anyhow::Result<()> + Copy,
|
||||
) -> anyhow::Result<()> {
|
||||
for compiler in features.iter() {
|
||||
writeln!(out.buffer, "#[cfg(feature=\"{}\")]", compiler)?;
|
||||
writeln!(out.buffer, "#[cfg(feature=\"test-{}\")]", compiler)?;
|
||||
writeln!(out.buffer, "#[cfg(test)]")?;
|
||||
writeln!(out.buffer, "#[allow(non_snake_case)]")?;
|
||||
with_test_module(&mut out, &compiler, f)?;
|
||||
|
@ -20,11 +20,7 @@ pub fn wast_processor(out: &mut Testsuite, p: PathBuf) -> Option<Test> {
|
||||
let compiler = out.path.get(0).unwrap();
|
||||
|
||||
// The implementation of `run_wast` lives in /tests/spectest.rs
|
||||
let body = format!(
|
||||
"crate::wast::run_wast(r#\"{}\"#, \"{}\")",
|
||||
p.display(),
|
||||
compiler
|
||||
);
|
||||
let body = format!("crate::run_wast(r#\"{}\"#, \"{}\")", p.display(), compiler);
|
||||
|
||||
Some(Test {
|
||||
name: testname,
|
||||
|
Reference in New Issue
Block a user