pub struct DefaultFramework { /* private fields */ }Expand description
Test framework using custom shell commands.
Provides maximum flexibility by delegating test discovery and execution to user-defined shell commands. Suitable for any test framework.
§Configuration
See DefaultFrameworkConfig for available options including:
discover_command: Shell command that outputs test IDsrun_command: Command template with{tests}placeholderresult_file: Optional JUnit XML path for detailed resultsworking_dir: Directory for running commands
Implementations§
Source§impl DefaultFramework
impl DefaultFramework
Sourcepub fn new(config: DefaultFrameworkConfig) -> Self
pub fn new(config: DefaultFrameworkConfig) -> Self
Creates a new default framework with the given configuration.
§Example
use offload::framework::default::DefaultFramework;
use offload::config::DefaultFrameworkConfig;
let framework = DefaultFramework::new(DefaultFrameworkConfig {
discover_command: "find tests -name '*.test.js' -exec basename {} \\;".into(),
run_command: "jest {tests}".into(),
result_file: Some("junit.xml".into()),
working_dir: None,
});Trait Implementations§
Source§impl TestFramework for DefaultFramework
impl TestFramework for DefaultFramework
Source§fn parse_results(
&self,
output: &ExecResult,
result_file: Option<&str>,
) -> FrameworkResult<Vec<TestResult>>
fn parse_results( &self, output: &ExecResult, result_file: Option<&str>, ) -> FrameworkResult<Vec<TestResult>>
Parse test results from execution output.
§Result Sources (in order of preference)
-
JUnit XML (
result_file): Provides per-test results with timing and error details. This is the recommended approach for accurate test tracking. -
Exit code fallback: If no JUnit XML is available, returns a single aggregate result based on the command’s exit code. This means:
- Individual test pass/fail status is lost
- All tests are reported under a synthetic “all_tests” ID
- Flaky test detection won’t work correctly
§Recommendation
Always configure result_file pointing to JUnit XML output for accurate results.
Most test frameworks support JUnit XML output:
- Jest:
--reporters=jest-junit - Go:
go-junit-report - pytest:
--junitxml=results.xml
Source§fn discover<'life0, 'life1, 'async_trait>(
&'life0 self,
_paths: &'life1 [PathBuf],
) -> Pin<Box<dyn Future<Output = FrameworkResult<Vec<TestRecord>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn discover<'life0, 'life1, 'async_trait>(
&'life0 self,
_paths: &'life1 [PathBuf],
) -> Pin<Box<dyn Future<Output = FrameworkResult<Vec<TestRecord>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Discovers tests in the given paths. Read more
Source§fn produce_test_execution_command(&self, tests: &[TestInstance<'_>]) -> Command
fn produce_test_execution_command(&self, tests: &[TestInstance<'_>]) -> Command
Generates a command to run the specified tests. Read more
Auto Trait Implementations§
impl Freeze for DefaultFramework
impl RefUnwindSafe for DefaultFramework
impl Send for DefaultFramework
impl Sync for DefaultFramework
impl Unpin for DefaultFramework
impl UnsafeUnpin for DefaultFramework
impl UnwindSafe for DefaultFramework
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more