1
Fork 0
mirror of https://github.com/RGBCube/uutils-coreutils synced 2025-07-28 03:27:44 +00:00

use a command result structure

This commit is contained in:
Sylvestre Ledru 2023-11-10 16:01:38 +01:00
parent 104e707b07
commit 2746c199cf
3 changed files with 107 additions and 45 deletions

View file

@ -13,6 +13,7 @@ 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, run_gnu_cmd};
#[derive(PartialEq, Debug, Clone)]
@ -204,20 +205,31 @@ fuzz_target!(|_data: &[u8]| {
args.push(OsString::from(generate_test_arg()));
}
let (rust_stdout, rust_stderr, uumain_exit_code) = generate_and_run_uumain(&args, uumain);
let rust_result = generate_and_run_uumain(&args, uumain);
let (gnu_stdout, gnu_stderr, gnu_exit_code) =
run_gnu_cmd(CMD_PATH, &args[1..], false).unwrap_or_else(|e| e);
let gnu_result = match run_gnu_cmd(CMD_PATH, &args[1..], false) {
Ok(result) => result,
Err(error_result) => {
eprintln!("Failed to run GNU command:");
eprintln!("Stderr: {}", error_result.stderr);
eprintln!("Exit Code: {}", error_result.exit_code);
CommandResult {
stdout: String::new(),
stderr: error_result.stderr,
exit_code: error_result.exit_code,
}
}
};
compare_result(
"test",
&format!("{:?}", &args[1..]),
&rust_stdout,
&gnu_stdout,
&rust_stderr,
&gnu_stderr,
uumain_exit_code,
gnu_exit_code,
&rust_result.stdout,
&gnu_result.stdout,
&rust_result.stderr,
&gnu_result.stderr,
rust_result.exit_code,
gnu_result.exit_code,
false, // Set to true if you want to fail on stderr diff
);
});