summaryrefslogtreecommitdiffstats
path: root/third_party/rust/wasm-smith/tests/core.rs
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/rust/wasm-smith/tests/core.rs')
-rw-r--r--third_party/rust/wasm-smith/tests/core.rs55
1 files changed, 5 insertions, 50 deletions
diff --git a/third_party/rust/wasm-smith/tests/core.rs b/third_party/rust/wasm-smith/tests/core.rs
index 7286952dc6..9b18fcdeaf 100644
--- a/third_party/rust/wasm-smith/tests/core.rs
+++ b/third_party/rust/wasm-smith/tests/core.rs
@@ -3,6 +3,9 @@ use rand::{rngs::SmallRng, RngCore, SeedableRng};
use wasm_smith::{Config, Module};
use wasmparser::{Validator, WasmFeatures};
+mod common;
+use common::{parser_features_from_config, validate};
+
#[test]
fn smoke_test_module() {
let mut rng = SmallRng::seed_from_u64(0);
@@ -66,7 +69,7 @@ fn multi_value_disabled() {
if let Ok(module) = Module::new(cfg, &mut u) {
let wasm_bytes = module.to_bytes();
let mut features = wasm_features();
- features.multi_value = false;
+ features.remove(WasmFeatures::MULTI_VALUE);
let mut validator = Validator::new_with_features(features);
validate(&mut validator, &wasm_bytes);
}
@@ -140,53 +143,5 @@ fn smoke_test_wasm_gc() {
}
fn wasm_features() -> WasmFeatures {
- WasmFeatures {
- multi_memory: true,
- relaxed_simd: true,
- memory64: true,
- exceptions: true,
- tail_call: true,
- function_references: true,
- gc: true,
- ..WasmFeatures::default()
- }
-}
-
-fn parser_features_from_config(config: &Config) -> WasmFeatures {
- WasmFeatures {
- mutable_global: true,
- saturating_float_to_int: config.saturating_float_to_int_enabled,
- sign_extension: config.sign_extension_ops_enabled,
- reference_types: config.reference_types_enabled,
- multi_value: config.multi_value_enabled,
- bulk_memory: config.bulk_memory_enabled,
- simd: config.simd_enabled,
- relaxed_simd: config.relaxed_simd_enabled,
- multi_memory: config.max_memories > 1,
- exceptions: config.exceptions_enabled,
- memory64: config.memory64_enabled,
- tail_call: config.tail_call_enabled,
-
- threads: false,
- floats: true,
- extended_const: false,
- component_model: false,
- function_references: false,
- memory_control: false,
- gc: false,
- component_model_values: false,
- component_model_nested_names: false,
- }
-}
-
-fn validate(validator: &mut Validator, bytes: &[u8]) {
- let err = match validator.validate_all(bytes) {
- Ok(_) => return,
- Err(e) => e,
- };
- drop(std::fs::write("test.wasm", &bytes));
- if let Ok(text) = wasmprinter::print_bytes(bytes) {
- drop(std::fs::write("test.wat", &text));
- }
- panic!("wasm failed to validate: {}", err);
+ WasmFeatures::all()
}