diff --git a/.vscode/cspell.dictionaries/workspace.wordlist.txt b/.vscode/cspell.dictionaries/workspace.wordlist.txt index 3757980d3..d917d30a4 100644 --- a/.vscode/cspell.dictionaries/workspace.wordlist.txt +++ b/.vscode/cspell.dictionaries/workspace.wordlist.txt @@ -331,6 +331,7 @@ utmpx uucore uucore_procs uudoc +uufuzz uumain uutil uutests diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index 37b66a3fa..d7d066515 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -1347,12 +1347,8 @@ dependencies = [ name = "uucore-fuzz" version = "0.0.0" dependencies = [ - "console", - "libc", "libfuzzer-sys", "rand 0.9.1", - "similar", - "tempfile", "uu_cksum", "uu_cut", "uu_date", @@ -1367,6 +1363,7 @@ dependencies = [ "uu_tr", "uu_wc", "uucore", + "uufuzz", ] [[package]] @@ -1378,6 +1375,18 @@ dependencies = [ "uuhelp_parser", ] +[[package]] +name = "uufuzz" +version = "0.0.30" +dependencies = [ + "console", + "libc", + "rand 0.9.1", + "similar", + "tempfile", + "uucore", +] + [[package]] name = "uuhelp_parser" version = "0.0.30" diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 255d11d5b..48da8e846 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -1,20 +1,22 @@ [package] name = "uucore-fuzz" version = "0.0.0" +description = "uutils ~ 'core' uutils fuzzers" +repository = "https://github.com/uutils/coreutils/tree/main/fuzz/" +edition.workspace = true publish = false + +[workspace.package] edition = "2024" +license = "MIT" [package.metadata] cargo-fuzz = true [dependencies] -console = "0.15.0" libfuzzer-sys = "0.4.7" -libc = "0.2.153" -tempfile = "3.15.0" rand = { version = "0.9.0", features = ["small_rng"] } -similar = "2.5.0" - +uufuzz = { path = "uufuzz/" } uucore = { path = "../src/uucore/", features = ["parser"] } uu_date = { path = "../src/uu/date/" } uu_test = { path = "../src/uu/test/" } diff --git a/fuzz/fuzz_targets/fuzz_cksum.rs b/fuzz/fuzz_targets/fuzz_cksum.rs index 3b5ddb8bb..be93a9605 100644 --- a/fuzz/fuzz_targets/fuzz_cksum.rs +++ b/fuzz/fuzz_targets/fuzz_cksum.rs @@ -6,20 +6,19 @@ #![no_main] use libfuzzer_sys::fuzz_target; +use rand::Rng; +use std::env::temp_dir; use std::ffi::OsString; +use std::fs::{self, File}; +use std::io::Write; +use std::process::Command; use uu_cksum::uumain; -mod fuzz_common; -use crate::fuzz_common::{ +use uufuzz::{ CommandResult, compare_result, generate_and_run_uumain, generate_random_file, generate_random_string, pretty_print::{print_or_empty, print_test_begin}, replace_fuzz_binary_name, run_gnu_cmd, }; -use rand::Rng; -use std::env::temp_dir; -use std::fs::{self, File}; -use std::io::Write; -use std::process::Command; static CMD_PATH: &str = "cksum"; diff --git a/fuzz/fuzz_targets/fuzz_cut.rs b/fuzz/fuzz_targets/fuzz_cut.rs index 828a7c619..4a5215f8a 100644 --- a/fuzz/fuzz_targets/fuzz_cut.rs +++ b/fuzz/fuzz_targets/fuzz_cut.rs @@ -11,8 +11,7 @@ use uu_cut::uumain; use rand::Rng; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::{ +use uufuzz::{ CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, }; static CMD_PATH: &str = "cut"; diff --git a/fuzz/fuzz_targets/fuzz_echo.rs b/fuzz/fuzz_targets/fuzz_echo.rs index a36a7ebad..e6b0ba9a6 100644 --- a/fuzz/fuzz_targets/fuzz_echo.rs +++ b/fuzz/fuzz_targets/fuzz_echo.rs @@ -6,11 +6,8 @@ use rand::Rng; use rand::prelude::IndexedRandom; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::CommandResult; -use crate::fuzz_common::{ - compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, -}; +use uufuzz::CommandResult; +use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd}; static CMD_PATH: &str = "echo"; diff --git a/fuzz/fuzz_targets/fuzz_env.rs b/fuzz/fuzz_targets/fuzz_env.rs index f38dced07..284089f83 100644 --- a/fuzz/fuzz_targets/fuzz_env.rs +++ b/fuzz/fuzz_targets/fuzz_env.rs @@ -10,11 +10,10 @@ use uu_env::uumain; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::{ +use rand::Rng; +use uufuzz::{ CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, }; -use rand::Rng; static CMD_PATH: &str = "env"; diff --git a/fuzz/fuzz_targets/fuzz_expr.rs b/fuzz/fuzz_targets/fuzz_expr.rs index a2c232ab3..77ecffabc 100644 --- a/fuzz/fuzz_targets/fuzz_expr.rs +++ b/fuzz/fuzz_targets/fuzz_expr.rs @@ -12,11 +12,8 @@ use rand::Rng; use rand::prelude::IndexedRandom; use std::{env, ffi::OsString}; -mod fuzz_common; -use crate::fuzz_common::CommandResult; -use crate::fuzz_common::{ - compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, -}; +use uufuzz::CommandResult; +use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd}; static CMD_PATH: &str = "expr"; fn generate_expr(max_depth: u32) -> String { diff --git a/fuzz/fuzz_targets/fuzz_printf.rs b/fuzz/fuzz_targets/fuzz_printf.rs index e8d74e2be..885ebb815 100644 --- a/fuzz/fuzz_targets/fuzz_printf.rs +++ b/fuzz/fuzz_targets/fuzz_printf.rs @@ -13,11 +13,8 @@ use rand::seq::IndexedRandom; use std::env; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::CommandResult; -use crate::fuzz_common::{ - compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, -}; +use uufuzz::CommandResult; +use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd}; static CMD_PATH: &str = "printf"; diff --git a/fuzz/fuzz_targets/fuzz_seq.rs b/fuzz/fuzz_targets/fuzz_seq.rs index d36f0720a..35721865e 100644 --- a/fuzz/fuzz_targets/fuzz_seq.rs +++ b/fuzz/fuzz_targets/fuzz_seq.rs @@ -11,11 +11,8 @@ use uu_seq::uumain; use rand::Rng; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::CommandResult; -use crate::fuzz_common::{ - compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, -}; +use uufuzz::CommandResult; +use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd}; static CMD_PATH: &str = "seq"; fn generate_seq() -> String { diff --git a/fuzz/fuzz_targets/fuzz_sort.rs b/fuzz/fuzz_targets/fuzz_sort.rs index e94938c39..8b38f39ec 100644 --- a/fuzz/fuzz_targets/fuzz_sort.rs +++ b/fuzz/fuzz_targets/fuzz_sort.rs @@ -12,11 +12,8 @@ use rand::Rng; use std::env; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::CommandResult; -use crate::fuzz_common::{ - compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, -}; +use uufuzz::CommandResult; +use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd}; static CMD_PATH: &str = "sort"; fn generate_sort_args() -> String { diff --git a/fuzz/fuzz_targets/fuzz_split.rs b/fuzz/fuzz_targets/fuzz_split.rs index 9a925b222..70860ece7 100644 --- a/fuzz/fuzz_targets/fuzz_split.rs +++ b/fuzz/fuzz_targets/fuzz_split.rs @@ -11,8 +11,7 @@ use uu_split::uumain; use rand::Rng; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::{ +use uufuzz::{ CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, }; static CMD_PATH: &str = "split"; diff --git a/fuzz/fuzz_targets/fuzz_test.rs b/fuzz/fuzz_targets/fuzz_test.rs index 6c81bda90..894a1dcd5 100644 --- a/fuzz/fuzz_targets/fuzz_test.rs +++ b/fuzz/fuzz_targets/fuzz_test.rs @@ -12,11 +12,8 @@ use rand::Rng; use rand::prelude::IndexedRandom; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::CommandResult; -use crate::fuzz_common::{ - compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, -}; +use uufuzz::CommandResult; +use uufuzz::{compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd}; #[allow(clippy::upper_case_acronyms)] #[derive(PartialEq, Debug, Clone)] diff --git a/fuzz/fuzz_targets/fuzz_tr.rs b/fuzz/fuzz_targets/fuzz_tr.rs index d260e3780..5055ec0d7 100644 --- a/fuzz/fuzz_targets/fuzz_tr.rs +++ b/fuzz/fuzz_targets/fuzz_tr.rs @@ -10,8 +10,7 @@ use uu_tr::uumain; use rand::Rng; -mod fuzz_common; -use crate::fuzz_common::{ +use uufuzz::{ CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, }; static CMD_PATH: &str = "tr"; diff --git a/fuzz/fuzz_targets/fuzz_wc.rs b/fuzz/fuzz_targets/fuzz_wc.rs index 39dfb1ee8..dbc046522 100644 --- a/fuzz/fuzz_targets/fuzz_wc.rs +++ b/fuzz/fuzz_targets/fuzz_wc.rs @@ -11,8 +11,7 @@ use uu_wc::uumain; use rand::Rng; use std::ffi::OsString; -mod fuzz_common; -use crate::fuzz_common::{ +use uufuzz::{ CommandResult, compare_result, generate_and_run_uumain, generate_random_string, run_gnu_cmd, }; static CMD_PATH: &str = "wc"; diff --git a/fuzz/uufuzz/Cargo.toml b/fuzz/uufuzz/Cargo.toml new file mode 100644 index 000000000..20c3e8847 --- /dev/null +++ b/fuzz/uufuzz/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "uufuzz" +authors = ["uutils developers"] +description = "uutils ~ 'core' uutils fuzzing library" +repository = "https://github.com/uutils/coreutils/tree/main/fuzz/uufuzz" +version = "0.0.30" +edition.workspace = true +license.workspace = true + + +[dependencies] +console = "0.15.0" +libc = "0.2.153" +rand = { version = "0.9.0", features = ["small_rng"] } +similar = "2.5.0" +uucore = { path = "../../src/uucore/", features = ["parser"] } +tempfile = "3.15.0" diff --git a/fuzz/fuzz_targets/fuzz_common/mod.rs b/fuzz/uufuzz/src/lib.rs similarity index 100% rename from fuzz/fuzz_targets/fuzz_common/mod.rs rename to fuzz/uufuzz/src/lib.rs diff --git a/fuzz/fuzz_targets/fuzz_common/pretty_print.rs b/fuzz/uufuzz/src/pretty_print.rs similarity index 100% rename from fuzz/fuzz_targets/fuzz_common/pretty_print.rs rename to fuzz/uufuzz/src/pretty_print.rs