From e734190c24d2a5aca5b62c2b1ab7e6136017a25c Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 02:05:12 +0900 Subject: Refactor parser fuzz testing --- crates/ra_syntax/tests/test.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/test.rs b/crates/ra_syntax/tests/test.rs index 458740c13..3de4a65af 100644 --- a/crates/ra_syntax/tests/test.rs +++ b/crates/ra_syntax/tests/test.rs @@ -8,7 +8,7 @@ use std::{ }; use test_utils::{project_dir, dir_tests, read_text, collect_tests}; -use ra_syntax::{SourceFile, AstNode, check_fuzz_invariants}; +use ra_syntax::{SourceFile, AstNode, fuzz}; #[test] fn lexer_tests() { @@ -47,7 +47,7 @@ fn parser_tests() { #[test] fn parser_fuzz_tests() { for (_, text) in collect_tests(&test_data_dir(), &["parser/fuzz-failures"]) { - check_fuzz_invariants(&text) + fuzz::check_parser(&text) } } -- cgit v1.2.3 From 4c7142d0c9be90c8947deb788993d903b2e0a5d1 Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 02:06:48 +0900 Subject: Add fuzz test for reparsing --- crates/ra_syntax/tests/test.rs | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/test.rs b/crates/ra_syntax/tests/test.rs index 3de4a65af..537b01368 100644 --- a/crates/ra_syntax/tests/test.rs +++ b/crates/ra_syntax/tests/test.rs @@ -51,6 +51,15 @@ fn parser_fuzz_tests() { } } +#[test] +fn reparse_fuzz_tests() { + for (_, text) in collect_tests(&test_data_dir(), &["reparse/fuzz-failures"]) { + let check = fuzz::CheckReparse::from_data(text.as_bytes()).unwrap(); + println!("{:?}", check); + check.run(); + } +} + /// Test that Rust-analyzer can parse and validate the rust-analyser /// TODO: Use this as a benchmark #[test] -- cgit v1.2.3 From 0acb61a911659537c51daf6793c67ef0c2b55bc9 Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 02:22:06 +0900 Subject: Fix an arithmetic overflow in reparser --- crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs new file mode 100644 index 000000000..388eb74ed --- /dev/null +++ b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0000.rs @@ -0,0 +1,6 @@ +0 +1 + + + +0 \ No newline at end of file -- cgit v1.2.3 From 9623e77d9f24b6ff8e718f7321a92081997ea1e9 Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 03:27:00 +0900 Subject: Fix reparsing bug when lex result is different --- crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs | 4 ++++ crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs | 4 ++++ 2 files changed, 8 insertions(+) create mode 100644 crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs create mode 100644 crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs new file mode 100644 index 000000000..d2d42c6f9 --- /dev/null +++ b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0001.rs @@ -0,0 +1,4 @@ +0 +1 + +bb" \ No newline at end of file diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs new file mode 100644 index 000000000..3fbee1548 --- /dev/null +++ b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0002.rs @@ -0,0 +1,4 @@ +1 +1 + +""! \ No newline at end of file -- cgit v1.2.3 From ec59d9bda569057727a9b04314c63e3b3adaaa95 Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 03:39:05 +0900 Subject: Fix lexer not producing right token on "_" --- crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs | Bin 0 -> 8 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs new file mode 100644 index 000000000..d2757cd08 Binary files /dev/null and b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0003.rs differ -- cgit v1.2.3 From edbc18516d211c8dbf07539358c7d8aeca24bb30 Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 04:33:05 +0900 Subject: Fix reparsing bug on "{}{}" --- crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs new file mode 100644 index 000000000..481617a70 --- /dev/null +++ b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0004.rs @@ -0,0 +1,4 @@ +0 +0 +} +{; \ No newline at end of file -- cgit v1.2.3 From bf8e7930daa3fb168106534b1cc418f5bc44e8c0 Mon Sep 17 00:00:00 2001 From: pcpthm Date: Fri, 22 Mar 2019 05:29:27 +0900 Subject: Fix reparsing failure when removing newline --- crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs (limited to 'crates/ra_syntax/tests') diff --git a/crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs new file mode 100644 index 000000000..074d761c7 --- /dev/null +++ b/crates/ra_syntax/tests/data/reparse/fuzz-failures/0005.rs @@ -0,0 +1,7 @@ +05 +1 + + + +b' + \ No newline at end of file -- cgit v1.2.3