provola_core/
test_runners.rs

1use crate::test::xunit::{AvailableTests, FullyQualifiedTestCaseId};
2use crate::{Error, TestResult};
3use serde::{Deserialize, Serialize};
4use strum_macros::Display;
5
6pub trait TestRunner {
7    fn run(&self, _opt: &TestRunnerOpt) -> Result<TestResult, Error> {
8        Err(Error::TestRunnerFeatureNotAvailable(TestRunnerFeature::Run))
9    }
10
11    fn list(&self, _opt: &TestRunnerOpt) -> Result<AvailableTests, Error> {
12        Err(Error::TestRunnerFeatureNotAvailable(
13            TestRunnerFeature::List,
14        ))
15    }
16}
17
18#[derive(Debug, Display)]
19pub enum TestRunnerFeature {
20    Run,
21    List,
22}
23
24#[derive(Default, Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
25pub struct TestRunnerOpt {
26    pub only: Only,
27}
28
29#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
30pub enum Only {
31    SingleByIndex(usize),
32    SingleByFqtc(FullyQualifiedTestCaseId),
33    All,
34}
35
36impl Default for Only {
37    fn default() -> Self {
38        Only::All
39    }
40}