pub struct SimpleTest<A, F> {
pub host_requirements: Option<TestCaseRequirements>,
/* private fields */
}Expand description
A test defined by an artifact resolver function and a run function.
Fields§
§host_requirements: Option<TestCaseRequirements>Optional test requirements
Implementations§
Source§impl<A, AR, F, E> SimpleTest<A, F>
impl<A, AR, F, E> SimpleTest<A, F>
Sourcepub fn new_async(
leaf_name: &'static str,
resolve: A,
run: F,
) -> SimpleTest<A, impl 'static + Send + Fn(PetriTestParams<'_>, AR) -> Result<(), E>>
pub fn new_async( leaf_name: &'static str, resolve: A, run: F, ) -> SimpleTest<A, impl 'static + Send + Fn(PetriTestParams<'_>, AR) -> Result<(), E>>
Returns a new test with the given leaf_name, resolve, and run
functions, whose run function is async, running it on a task
pool owned by petri.
The test defaults to stable, not ignored, with no host requirements and
a RemoteAccess::LocalOnly policy. Use the builder methods
(requirements, unstable,
ignore, remote_access) to
override these.
Source§impl<A, AR, F, E> SimpleTest<A, F>
impl<A, AR, F, E> SimpleTest<A, F>
Sourcepub fn new_sync(leaf_name: &'static str, resolve: A, run: F) -> Self
pub fn new_sync(leaf_name: &'static str, resolve: A, run: F) -> Self
Returns a new test with the given leaf_name, resolve, and run
functions.
Use new_async instead if the test constructs a
PetriVm; its diagnostics on failure rely on petri
owning the task pool.
The test defaults to stable, not ignored, with no host requirements and
a RemoteAccess::LocalOnly policy. Use the builder methods
(requirements, unstable,
ignore, remote_access) to
override these.
Source§impl<A, F> SimpleTest<A, F>
impl<A, F> SimpleTest<A, F>
Sourcepub fn requirements(self, requirements: TestCaseRequirements) -> Self
pub fn requirements(self, requirements: TestCaseRequirements) -> Self
Sets the host requirements that must be satisfied for this test to run.
Sourcepub fn unstable(self, reason: &'static str) -> Self
pub fn unstable(self, reason: &'static str) -> Self
Marks this test as unstable. When PETRI_IGNORE_UNSTABLE_FAILURES is
set (as it is in CI), a failure of this test is logged and ignored
rather than failing the run; otherwise it fails like any other test.
reason documents why the test is unstable and is logged when an
unstable failure is ignored.
Sourcepub fn unstable_on(
self,
reason: &'static str,
requirement: TestRequirement,
) -> Self
pub fn unstable_on( self, reason: &'static str, requirement: TestRequirement, ) -> Self
Marks this test as unstable only on hosts that satisfy requirement.
On other hosts the test still runs, but failures remain gating. This does not change the test’s host eligibility requirements.
Sourcepub fn ignore(self) -> Self
pub fn ignore(self) -> Self
Marks this test as ignored: it is skipped by default and only runs when
explicitly requested (like a libtest #[ignore] test).
Sourcepub fn remote_access(self, policy: RemoteAccess) -> Self
pub fn remote_access(self, policy: RemoteAccess) -> Self
Sets the remote-access policy used when resolving artifacts.
Trait Implementations§
Source§impl<A, AR, F, E> RunTest for SimpleTest<A, F>
impl<A, AR, F, E> RunTest for SimpleTest<A, F>
Source§fn resolve(&self, resolver: ArtifactResolver<'_>) -> Option<Self::Artifacts>
fn resolve(&self, resolver: ArtifactResolver<'_>) -> Option<Self::Artifacts>
Source§fn run(
&self,
params: PetriTestParams<'_>,
artifacts: Self::Artifacts,
) -> Result<()>
fn run( &self, params: PetriTestParams<'_>, artifacts: Self::Artifacts, ) -> Result<()>
name, with the given
artifacts.Source§fn host_requirements(&self) -> Option<&TestCaseRequirements>
fn host_requirements(&self) -> Option<&TestCaseRequirements>
Auto Trait Implementations§
impl<A, F> Freeze for SimpleTest<A, F>
impl<A, F> RefUnwindSafe for SimpleTest<A, F>where
A: RefUnwindSafe,
F: RefUnwindSafe,
impl<A, F> Send for SimpleTest<A, F>
impl<A, F> Sync for SimpleTest<A, F>
impl<A, F> Unpin for SimpleTest<A, F>
impl<A, F> UnsafeUnpin for SimpleTest<A, F>where
A: UnsafeUnpin,
F: UnsafeUnpin,
impl<A, F> UnwindSafe for SimpleTest<A, F>where
A: UnwindSafe,
F: UnwindSafe,
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
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.