1
0
зеркало из https://github.com/glebtv/tui-textarea.git synced 2026-09-03 22:35:50 +03:00

include rendering in fuzzing tests

Этот коммит содержится в:
rhysd
2022-07-16 21:54:10 +09:00
родитель ac04feb5ea
Коммит b56f252f08
4 изменённых файлов: 27 добавлений и 4 удалений

9
fuzz/Cargo.lock сгенерированный
Просмотреть файл

@@ -289,6 +289,14 @@ dependencies = [
"tui",
]
[[package]]
name = "tui-textarea-bench"
version = "0.0.0"
dependencies = [
"tui",
"tui-textarea",
]
[[package]]
name = "tui-textarea-fuzz"
version = "0.0.0"
@@ -296,6 +304,7 @@ dependencies = [
"arbitrary",
"libfuzzer-sys",
"tui-textarea",
"tui-textarea-bench",
]
[[package]]

Просмотреть файл

@@ -12,6 +12,7 @@ cargo-fuzz = true
libfuzzer-sys = "0.4"
arbitrary = "1"
tui-textarea = { path = "..", features = ["search", "arbitrary"] }
tui-textarea-bench = { path = "../bench" }
# Prevent this from interfering with workspaces
[workspace]

Просмотреть файл

@@ -5,17 +5,19 @@ use libfuzzer_sys::fuzz_target;
use std::iter;
use std::str;
use tui_textarea::{Input, TextArea};
use tui_textarea_bench::{dummy_terminal, TerminalExt};
fn fuzz(data: &[u8]) -> Result<()> {
let mut u = Unstructured::new(data);
let inputs: Vec<_> = iter::repeat_with(|| Input::arbitrary(&mut u))
let mut term = dummy_terminal();
let mut data = Unstructured::new(data);
let inputs: Vec<_> = iter::repeat_with(|| Input::arbitrary(&mut data))
.take(100)
.collect::<Result<_>>()?;
let text = <&str>::arbitrary(&mut u)?;
let text = <&str>::arbitrary(&mut data)?;
let mut textarea = TextArea::from(text.lines());
for input in inputs {
textarea.input(input);
let _ = textarea.widget();
term.draw_textarea(&mut textarea);
}
Ok(())
}