Unify fuzzing and testing code

This commit is contained in:
Rerumu 2022-05-21 03:31:02 -04:00
parent 6c57a0dd11
commit 1e8f131eff
7 changed files with 25 additions and 51 deletions

View File

@ -2,7 +2,6 @@
members = [ members = [
"codegen-luajit", "codegen-luajit",
"codegen-luau", "codegen-luau",
"dev-fuzz",
"dev-test", "dev-test",
"wasm-ast", "wasm-ast",
"wasm-synth" "wasm-synth"

View File

@ -1,37 +0,0 @@
[package]
name = "fuzz"
version = "0.0.0"
edition = "2021"
publish = false
[package.metadata]
cargo-fuzz = true
[dependencies]
libfuzzer-sys = "0.4"
wasm-smith = "0.8.0"
[dependencies.parity-wasm]
git = "https://github.com/paritytech/parity-wasm.git"
features = ["multi_value", "sign_ext"]
[dependencies.wasm-ast]
path = "../wasm-ast"
[dependencies.codegen-luajit]
path = "../codegen-luajit"
[dependencies.codegen-luau]
path = "../codegen-luau"
[[bin]]
name = "luajit_translate"
path = "fuzz_targets/luajit_translate.rs"
test = false
doc = false
[[bin]]
name = "luau_translate"
path = "fuzz_targets/luau_translate.rs"
test = false
doc = false

View File

@ -2,24 +2,34 @@
name = "dev-test" name = "dev-test"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
publish = false
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [package.metadata]
cargo-fuzz = true
[dependencies.test-generator] [dependencies]
version = "0.3.0" libfuzzer-sys = "0.4"
wasm-smith = "0.8.0"
[dependencies.wast] wasm-ast = { path = "../wasm-ast" }
version = "41.0.0" codegen-luajit = { path = "../codegen-luajit" }
codegen-luau = { path = "../codegen-luau" }
[dependencies.parity-wasm] [dependencies.parity-wasm]
git = "https://github.com/paritytech/parity-wasm.git" git = "https://github.com/paritytech/parity-wasm.git"
features = ["multi_value", "sign_ext"] features = ["multi_value", "sign_ext"]
[dependencies.wasm-ast] [dev-dependencies]
path = "../wasm-ast" test-generator = "0.3.0"
wast = "41.0.0"
[dependencies.codegen-luajit] [[bin]]
path = "../codegen-luajit" name = "luajit_translate"
path = "fuzz_targets/luajit_translate.rs"
test = false
doc = false
[dependencies.codegen-luau] [[bin]]
path = "../codegen-luau" name = "luau_translate"
path = "fuzz_targets/luau_translate.rs"
test = false
doc = false

View File

@ -117,6 +117,8 @@ fn parse_and_validate<'a>(buffer: &'a ParseBuffer) -> Option<Wast<'a>> {
observer.then(|| loaded) observer.then(|| loaded)
} }
static TEMP_DIR: &str = env!("CARGO_TARGET_TMPDIR");
struct Tester<T> { struct Tester<T> {
_marker: PhantomData<T>, _marker: PhantomData<T>,
} }
@ -124,7 +126,7 @@ struct Tester<T> {
impl<T: Target> Tester<T> { impl<T: Target> Tester<T> {
fn test(name: &str, source: &str) -> IResult<()> { fn test(name: &str, source: &str) -> IResult<()> {
if let Some(data) = Self::run_generation(source)? { if let Some(data) = Self::run_generation(source)? {
let temp = std::env::temp_dir().join("wasm-test-".to_string() + name); let temp = PathBuf::from(TEMP_DIR).join("west-".to_string() + name);
std::fs::write(&temp, &data)?; std::fs::write(&temp, &data)?;
Self::run_command(&temp)?; Self::run_command(&temp)?;