Dedupe TestSymbolRunner
This commit is contained in:
parent
5045c3494d
commit
445b3edd9d
3 changed files with 42 additions and 57 deletions
|
|
@ -169,7 +169,7 @@ impl<
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::SymbolRunner;
|
||||
use super::symbol_runner::TestSymbolRunner;
|
||||
use crate::async_utils::run;
|
||||
use crate::loggers::{Entry, StoringLogger};
|
||||
use crate::resources::{FromArtifact, FromResource, Resource};
|
||||
|
|
@ -178,33 +178,11 @@ mod test {
|
|||
use crate::{ImplementationBuilder, ResourceLocator, Setup};
|
||||
use async_trait::async_trait;
|
||||
use regex::Regex;
|
||||
use slog::{info, Logger};
|
||||
use std::cell::RefCell;
|
||||
use std::error::Error;
|
||||
use std::fmt::Debug;
|
||||
use std::rc::{Rc, Weak};
|
||||
|
||||
struct TestSymbolRunner {
|
||||
count: Rc<RefCell<usize>>,
|
||||
}
|
||||
|
||||
#[async_trait(?Send)]
|
||||
impl SymbolRunner for TestSymbolRunner {
|
||||
async fn run_symbol<S: Symbol + Debug>(
|
||||
&self,
|
||||
symbol: &S,
|
||||
logger: &Logger,
|
||||
force: bool,
|
||||
) -> Result<bool, Box<dyn Error>> {
|
||||
info!(logger, "run");
|
||||
let run = force || !symbol.target_reached().await?;
|
||||
if run {
|
||||
*self.count.borrow_mut() += 1;
|
||||
}
|
||||
Ok(run)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, PartialEq, Eq, Hash)]
|
||||
struct TestResource<T>(&'static str, T);
|
||||
impl<T> Resource for TestResource<T> {
|
||||
|
|
@ -308,10 +286,7 @@ mod test {
|
|||
>,
|
||||
StoringLogger,
|
||||
) {
|
||||
let count = Rc::new(RefCell::new(0));
|
||||
let runner = TestSymbolRunner {
|
||||
count: Rc::clone(&count),
|
||||
};
|
||||
let (count, runner) = TestSymbolRunner::new();
|
||||
let logger = StoringLogger::new();
|
||||
(count, Setup::new_with(runner, logger.clone()), logger)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,10 +53,10 @@ for_each_tuple!(runnable_for_tuple);
|
|||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::super::symbol_runner::TestSymbolRunner;
|
||||
use super::Runnable;
|
||||
use crate::async_utils::run;
|
||||
use crate::symbols::Symbol;
|
||||
use crate::SymbolRunner;
|
||||
use async_trait::async_trait;
|
||||
use slog::{o, Discard, Logger};
|
||||
use std::cell::RefCell;
|
||||
|
|
@ -103,39 +103,11 @@ mod test {
|
|||
}
|
||||
}
|
||||
|
||||
struct TestSymbolRunner {
|
||||
count: Rc<RefCell<usize>>,
|
||||
}
|
||||
|
||||
fn get_runner() -> (Rc<RefCell<usize>>, TestSymbolRunner) {
|
||||
let count = Rc::new(RefCell::new(0));
|
||||
let runner = TestSymbolRunner {
|
||||
count: Rc::clone(&count),
|
||||
};
|
||||
(count, runner)
|
||||
}
|
||||
|
||||
#[async_trait(?Send)]
|
||||
impl SymbolRunner for TestSymbolRunner {
|
||||
async fn run_symbol<S: Symbol + Debug>(
|
||||
&self,
|
||||
symbol: &S,
|
||||
_logger: &Logger,
|
||||
force: bool,
|
||||
) -> Result<bool, Box<dyn Error>> {
|
||||
let run = force || !symbol.target_reached().await?;
|
||||
if run {
|
||||
*self.count.borrow_mut() += 1;
|
||||
}
|
||||
Ok(run)
|
||||
}
|
||||
}
|
||||
|
||||
fn run_symbol(
|
||||
runnable: impl Runnable,
|
||||
force: bool,
|
||||
) -> (Rc<RefCell<usize>>, Result<bool, Box<dyn Error>>) {
|
||||
let (count, runner) = get_runner();
|
||||
let (count, runner) = TestSymbolRunner::new();
|
||||
let res = run(runnable.run(&runner, &Logger::root(Discard, o!()), force));
|
||||
(count, res)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,9 +2,13 @@ use crate::async_utils::sleep;
|
|||
use crate::symbols::Symbol;
|
||||
use async_trait::async_trait;
|
||||
use slog::{debug, info, o, trace, Logger};
|
||||
#[cfg(test)]
|
||||
use std::cell::RefCell;
|
||||
use std::error::Error;
|
||||
use std::fmt;
|
||||
use std::fmt::Debug;
|
||||
#[cfg(test)]
|
||||
use std::rc::Rc;
|
||||
use std::time::Duration;
|
||||
|
||||
#[async_trait(?Send)]
|
||||
|
|
@ -198,6 +202,40 @@ where
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
pub struct TestSymbolRunner {
|
||||
count: Rc<RefCell<usize>>,
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
impl TestSymbolRunner {
|
||||
pub fn new() -> (Rc<RefCell<usize>>, Self) {
|
||||
let count = Rc::new(RefCell::new(0));
|
||||
let runner = TestSymbolRunner {
|
||||
count: Rc::clone(&count),
|
||||
};
|
||||
(count, runner)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
#[async_trait(?Send)]
|
||||
impl SymbolRunner for TestSymbolRunner {
|
||||
async fn run_symbol<S: Symbol + Debug>(
|
||||
&self,
|
||||
symbol: &S,
|
||||
logger: &Logger,
|
||||
force: bool,
|
||||
) -> Result<bool, Box<dyn Error>> {
|
||||
info!(logger, "run");
|
||||
let run = force || !symbol.target_reached().await?;
|
||||
if run {
|
||||
*self.count.borrow_mut() += 1;
|
||||
}
|
||||
Ok(run)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::{DrySymbolRunner, InitializingSymbolRunner, ReportingSymbolRunner, SymbolRunner};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue