Parent
Part of #33.
What to build
Strong tests for the command entry: argument parsing, option validation, exit
code selection, and the usage text. This includes --ignore-tests,
--minimumpriority, --strict, --reportfile, --only,
--ignore-errors-on-exit, and --ignore-violations-on-exit.
Exit code selection is the contract in the README table: 0 for a clean run, 1
for an error, 2 for findings, and errors take precedence. Today a mutation of a
precedence branch or an option name can escape. After this ticket the tests
cover each option, each rejection message, and each exit code path.
Acceptance criteria
Blocked by
Parent
Part of #33.
What to build
Strong tests for the command entry: argument parsing, option validation, exit
code selection, and the usage text. This includes
--ignore-tests,--minimumpriority,--strict,--reportfile,--only,--ignore-errors-on-exit, and--ignore-violations-on-exit.Exit code selection is the contract in the README table: 0 for a clean run, 1
for an error, 2 for findings, and errors take precedence. Today a mutation of a
precedence branch or an option name can escape. After this ticket the tests
cover each option, each rejection message, and each exit code path.
Acceptance criteria
src/lib.rsandsrc/main.rsexits 0. It prints a total MSI of 75percent or more, and a covered-code MSI of 80 percent or more.
--coverageand the full Cargo test suite, less thepackaging smoke test.
messrust::run. It asserts the exit code, thestandard output text, or the standard error text. No new public item
exists only to make a test possible.
#[cfg(test)]unit test does not replace deletion.mutator-disablecomment is added undersrc. No baseline fileand no blacklist file is added.
cargo testpasses.cargo clippy --all-targetsadds no new warning.Blocked by