use a generic Write instance for command output

This commit is contained in:
Dustin J. Mitchell
2020-12-20 19:45:24 -05:00
parent 6b550e7516
commit 7d17740ca8
13 changed files with 154 additions and 46 deletions

View File

@@ -2,8 +2,10 @@ use crate::argparse::{Filter, Modification};
use crate::invocation::{apply_modification, filtered_tasks};
use failure::Fallible;
use taskchampion::Replica;
use termcolor::WriteColor;
pub(crate) fn execute(
pub(crate) fn execute<W: WriteColor>(
w: &mut W,
replica: &mut Replica,
filter: Filter,
modification: Modification,
@@ -11,7 +13,7 @@ pub(crate) fn execute(
for task in filtered_tasks(replica, &filter)? {
let mut task = task.into_mut(replica);
apply_modification(&mut task, &modification)?;
apply_modification(w, &mut task, &modification)?;
}
Ok(())
@@ -22,10 +24,12 @@ mod test {
use super::*;
use crate::argparse::DescriptionMod;
use crate::invocation::cmd::test::test_replica;
use crate::invocation::cmd::test::*;
use taskchampion::Status;
#[test]
fn test_modify() {
let mut w = test_writer();
let mut replica = test_replica();
let task = replica
@@ -39,11 +43,16 @@ mod test {
description: DescriptionMod::Set("new description".to_owned()),
..Default::default()
};
execute(&mut replica, filter, modification).unwrap();
execute(&mut w, &mut replica, filter, modification).unwrap();
// check that the task appeared..
let task = replica.get_task(task.get_uuid()).unwrap().unwrap();
assert_eq!(task.get_description(), "new description");
assert_eq!(task.get_status(), Status::Pending);
assert_eq!(
w.into_string(),
format!("modified task {}\n", task.get_uuid())
);
}
}