rtest 0.2.2

integration test building framework
Documentation
use super::ExecutionStrategy;
use crate::{
    context::ResourceId,
    runner::{result_map::ExecutionResultMap, test_repo::TestRepo, Runner},
};

pub struct RerunStrategy {
    old: ExecutionResultMap,
}

impl ExecutionStrategy for RerunStrategy {
    fn run(&self, repo: &mut TestRepo, _: &[ResourceId]) -> ExecutionResultMap {
        let mut result_map = ExecutionResultMap::default();
        let params = repo.runner_params();

        for r in self.old.records() {
            if let Some(tc) = repo.cases().get(&r.test_id) {
                if let Ok(res) = Runner::exec_testcase(tc, &params) {
                    result_map.record(tc.test_id(), res);
                }
            }
        }

        result_map
    }
}

impl RerunStrategy {
    pub(crate) fn new(old: ExecutionResultMap) -> Self { Self { old } }
}