use crate::cli::Args;
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum FailMode {
Off,
OnError,
OnErrorKeepBody,
}
impl FailMode {
pub fn from_args(args: &Args) -> FailMode {
if args.fail_with_body {
FailMode::OnErrorKeepBody
} else if args.fail_on_error {
FailMode::OnError
} else {
FailMode::Off
}
}
}
#[cfg(test)]
mod tests {
use super::*;
fn mk_args(fail: bool, fail_with_body: bool) -> Args {
let mut a = Args::test_default();
a.fail_on_error = fail;
a.fail_with_body = fail_with_body;
a
}
#[test]
fn off_when_neither_set() {
assert_eq!(FailMode::from_args(&mk_args(false, false)), FailMode::Off);
}
#[test]
fn on_error_when_only_f() {
assert_eq!(FailMode::from_args(&mk_args(true, false)), FailMode::OnError);
}
#[test]
fn keep_body_when_only_fail_with_body() {
assert_eq!(
FailMode::from_args(&mk_args(false, true)),
FailMode::OnErrorKeepBody
);
}
#[test]
fn keep_body_wins_when_both() {
assert_eq!(
FailMode::from_args(&mk_args(true, true)),
FailMode::OnErrorKeepBody
);
}
}