aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/fuzz
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/fuzz')
-rw-r--r--crates/ra_syntax/fuzz/Cargo.toml13
-rw-r--r--crates/ra_syntax/fuzz/fuzz_targets/parser.rs6
-rw-r--r--crates/ra_syntax/fuzz/fuzz_targets/reparse.rs9
3 files changed, 21 insertions, 7 deletions
diff --git a/crates/ra_syntax/fuzz/Cargo.toml b/crates/ra_syntax/fuzz/Cargo.toml
index 4a255882e..613ad2857 100644
--- a/crates/ra_syntax/fuzz/Cargo.toml
+++ b/crates/ra_syntax/fuzz/Cargo.toml
@@ -4,14 +4,15 @@ name = "ra_syntax-fuzz"
4version = "0.0.1" 4version = "0.0.1"
5authors = ["rust-analyzer developers"] 5authors = ["rust-analyzer developers"]
6publish = false 6publish = false
7edition = "2018"
7 8
8[package.metadata] 9[package.metadata]
9cargo-fuzz = true 10cargo-fuzz = true
10 11
11[dependencies.ra_syntax] 12[dependencies]
12path = ".." 13ra_syntax = { path = ".." }
13[dependencies.libfuzzer-sys] 14ra_text_edit = { path = "../../ra_text_edit" }
14git = "https://github.com/rust-fuzz/libfuzzer-sys.git" 15libfuzzer-sys = { git = "https://github.com/rust-fuzz/libfuzzer-sys.git" }
15 16
16# Prevent this from interfering with workspaces 17# Prevent this from interfering with workspaces
17[workspace] 18[workspace]
@@ -20,3 +21,7 @@ members = ["."]
20[[bin]] 21[[bin]]
21name = "parser" 22name = "parser"
22path = "fuzz_targets/parser.rs" 23path = "fuzz_targets/parser.rs"
24
25[[bin]]
26name = "reparse"
27path = "fuzz_targets/reparse.rs"
diff --git a/crates/ra_syntax/fuzz/fuzz_targets/parser.rs b/crates/ra_syntax/fuzz/fuzz_targets/parser.rs
index 4667d5579..76a8b08d0 100644
--- a/crates/ra_syntax/fuzz/fuzz_targets/parser.rs
+++ b/crates/ra_syntax/fuzz/fuzz_targets/parser.rs
@@ -1,9 +1,9 @@
1#![no_main] 1#![no_main]
2#[macro_use] extern crate libfuzzer_sys; 2use libfuzzer_sys::fuzz_target;
3extern crate ra_syntax; 3use ra_syntax::fuzz::check_parser;
4 4
5fuzz_target!(|data: &[u8]| { 5fuzz_target!(|data: &[u8]| {
6 if let Ok(text) = std::str::from_utf8(data) { 6 if let Ok(text) = std::str::from_utf8(data) {
7 ra_syntax::check_fuzz_invariants(text) 7 check_parser(text)
8 } 8 }
9}); 9});
diff --git a/crates/ra_syntax/fuzz/fuzz_targets/reparse.rs b/crates/ra_syntax/fuzz/fuzz_targets/reparse.rs
new file mode 100644
index 000000000..45524d4c1
--- /dev/null
+++ b/crates/ra_syntax/fuzz/fuzz_targets/reparse.rs
@@ -0,0 +1,9 @@
1#![no_main]
2use libfuzzer_sys::fuzz_target;
3use ra_syntax::fuzz::CheckReparse;
4
5fuzz_target!(|data: &[u8]| {
6 if let Some(check) = CheckReparse::from_data(data) {
7 check.run();
8 }
9});