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, ¶ms) {
result_map.record(tc.test_id(), res);
}
}
}
result_map
}
}
impl RerunStrategy {
pub(crate) fn new(old: ExecutionResultMap) -> Self { Self { old } }
}