provola_core/
test_runners.rs1use 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}