pub struct LocalExecutor { /* private fields */ }Expand description
Executes commands directly on the host machine.
Carries an optional RYRA_REGISTRY_DIR override prepended to every
command — bare-mode tests use this to point ryra at the in-repo
registry/ checkout instead of cloning from GitHub on each run.
Implementations§
Source§impl LocalExecutor
impl LocalExecutor
Sourcepub fn new() -> Self
pub fn new() -> Self
Construct a LocalExecutor with no registry override. Used by commands
that run ryra but never resolve the registry (e.g. ryra remove
during ryra test reset); most callers want
LocalExecutor::with_registry.
Sourcepub fn with_registry(registry_path: &Path) -> Self
pub fn with_registry(registry_path: &Path) -> Self
Construct a LocalExecutor that prepends RYRA_REGISTRY_DIR=<path>
to every command, so ryra resolves the default registry to the
local checkout under test.
Sourcepub fn with_config_dir(self, config_dir: &Path) -> Self
pub fn with_config_dir(self, config_dir: &Path) -> Self
Also export RYRA_CONFIG_DIR=<path> on every command, isolating
preferences.toml into a throwaway dir so host tests never read or
clobber the user’s real SMTP/auth/backup credentials.
Sourcepub fn with_data_dir(self, data_dir: &Path) -> Self
pub fn with_data_dir(self, data_dir: &Path) -> Self
Also export RYRA_DATA_DIR=<path> on every command, so test service
deployments (data, .env, configs, and the quadlet files ryra writes
into service_home) land in the sandbox instead of the user’s real
~/.local/share/services/.
Trait Implementations§
Source§impl Default for LocalExecutor
impl Default for LocalExecutor
Source§impl Executor for LocalExecutor
impl Executor for LocalExecutor
Source§fn exec<'life0, 'life1, 'async_trait>(
&'life0 self,
cmd: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ExecOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn exec<'life0, 'life1, 'async_trait>(
&'life0 self,
cmd: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<ExecOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn exec_streaming<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
cmd: &'life1 str,
prefix: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<ExecOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn exec_streaming<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
cmd: &'life1 str,
prefix: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<ExecOutput>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn wait_for_service<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
unit: &'life1 str,
timeout: Duration,
prefix: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn wait_for_service<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
unit: &'life1 str,
timeout: Duration,
prefix: &'life2 str,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
prefix is the line
prefix for the wait’s progress heartbeat, so it aligns with surrounding
test output (e.g. "[my-test] ").Source§fn fetch_dir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_remote_path: &'life1 str,
_local_path: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn fetch_dir<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
_remote_path: &'life1 str,
_local_path: &'life2 Path,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn playwright_out_dir(&self, test_name: &str) -> String
fn playwright_out_dir(&self, test_name: &str) -> String
fetch_dir]s it into the host’s canonical reports dir.
For local execution the two are the same path (so the fetch is a no-op);
for a VM it’s a VM-internal staging path that gets copied out.