diff options
Diffstat (limited to 'crates/ra_syntax/fuzz')
-rw-r--r-- | crates/ra_syntax/fuzz/Cargo.toml | 13 | ||||
-rw-r--r-- | crates/ra_syntax/fuzz/fuzz_targets/parser.rs | 6 | ||||
-rw-r--r-- | crates/ra_syntax/fuzz/fuzz_targets/reparse.rs | 9 |
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" | |||
4 | version = "0.0.1" | 4 | version = "0.0.1" |
5 | authors = ["rust-analyzer developers"] | 5 | authors = ["rust-analyzer developers"] |
6 | publish = false | 6 | publish = false |
7 | edition = "2018" | ||
7 | 8 | ||
8 | [package.metadata] | 9 | [package.metadata] |
9 | cargo-fuzz = true | 10 | cargo-fuzz = true |
10 | 11 | ||
11 | [dependencies.ra_syntax] | 12 | [dependencies] |
12 | path = ".." | 13 | ra_syntax = { path = ".." } |
13 | [dependencies.libfuzzer-sys] | 14 | ra_text_edit = { path = "../../ra_text_edit" } |
14 | git = "https://github.com/rust-fuzz/libfuzzer-sys.git" | 15 | libfuzzer-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]] |
21 | name = "parser" | 22 | name = "parser" |
22 | path = "fuzz_targets/parser.rs" | 23 | path = "fuzz_targets/parser.rs" |
24 | |||
25 | [[bin]] | ||
26 | name = "reparse" | ||
27 | path = "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; | 2 | use libfuzzer_sys::fuzz_target; |
3 | extern crate ra_syntax; | 3 | use ra_syntax::fuzz::check_parser; |
4 | 4 | ||
5 | fuzz_target!(|data: &[u8]| { | 5 | fuzz_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] | ||
2 | use libfuzzer_sys::fuzz_target; | ||
3 | use ra_syntax::fuzz::CheckReparse; | ||
4 | |||
5 | fuzz_target!(|data: &[u8]| { | ||
6 | if let Some(check) = CheckReparse::from_data(data) { | ||
7 | check.run(); | ||
8 | } | ||
9 | }); | ||