Skip to main content

SimpleTest

Struct SimpleTest 

Source
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>
where A: 'static + Send + Fn(&ArtifactResolver<'_>) -> Option<AR>, F: 'static + Send + AsyncFn(PetriTestParams<'_>, DefaultDriver, AR) -> Result<(), E>, E: Into<Error>,

Source

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>
where A: 'static + Send + Fn(&ArtifactResolver<'_>) -> Option<AR>, F: 'static + Send + Fn(PetriTestParams<'_>, AR) -> Result<(), E>, E: Into<Error>,

Source

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>

Source

pub fn requirements(self, requirements: TestCaseRequirements) -> Self

Sets the host requirements that must be satisfied for this test to run.

Source

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.

Source

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.

Source

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).

Source

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>
where A: 'static + Send + Fn(&ArtifactResolver<'_>) -> Option<AR>, F: 'static + Send + Fn(PetriTestParams<'_>, AR) -> Result<(), E>, E: Into<Error>,

Source§

type Artifacts = AR

The type of artifacts required by the test.
Source§

fn leaf_name(&self) -> &str

The leaf name of the test. Read more
Source§

fn resolve(&self, resolver: ArtifactResolver<'_>) -> Option<Self::Artifacts>

Returns the artifacts required by the test. Read more
Source§

fn run( &self, params: PetriTestParams<'_>, artifacts: Self::Artifacts, ) -> Result<()>

Runs the test, which has been assigned name, with the given artifacts.
Source§

fn host_requirements(&self) -> Option<&TestCaseRequirements>

Returns the host requirements of the current test, if any.
Source§

fn unstable(&self, host_context: &HostContext) -> Option<&str>

Returns the reason this test is unstable on this host, or None if stable.
Source§

fn ignored(&self) -> bool

Whether this test is ignored (skipped by default, like a libtest #[ignore] test).

Auto Trait Implementations§

§

impl<A, F> Freeze for SimpleTest<A, F>
where A: Freeze, F: Freeze,

§

impl<A, F> RefUnwindSafe for SimpleTest<A, F>

§

impl<A, F> Send for SimpleTest<A, F>
where A: Send, F: Send,

§

impl<A, F> Sync for SimpleTest<A, F>
where A: Sync, F: Sync,

§

impl<A, F> Unpin for SimpleTest<A, F>
where A: Unpin, F: Unpin,

§

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> Conv for T

§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
§

impl<T> FmtForward for T

§

fn fmt_binary(self) -> FmtBinary<Self>
where Self: Binary,

Causes self to use its Binary implementation when Debug-formatted.
§

fn fmt_display(self) -> FmtDisplay<Self>
where Self: Display,

Causes self to use its Display implementation when Debug-formatted.
§

fn fmt_lower_exp(self) -> FmtLowerExp<Self>
where Self: LowerExp,

Causes self to use its LowerExp implementation when Debug-formatted.
§

fn fmt_lower_hex(self) -> FmtLowerHex<Self>
where Self: LowerHex,

Causes self to use its LowerHex implementation when Debug-formatted.
§

fn fmt_octal(self) -> FmtOctal<Self>
where Self: Octal,

Causes self to use its Octal implementation when Debug-formatted.
§

fn fmt_pointer(self) -> FmtPointer<Self>
where Self: Pointer,

Causes self to use its Pointer implementation when Debug-formatted.
§

fn fmt_upper_exp(self) -> FmtUpperExp<Self>
where Self: UpperExp,

Causes self to use its UpperExp implementation when Debug-formatted.
§

fn fmt_upper_hex(self) -> FmtUpperHex<Self>
where Self: UpperHex,

Causes self to use its UpperHex implementation when Debug-formatted.
§

fn fmt_list(self) -> FmtList<Self>
where &'a Self: for<'a> IntoIterator,

Formats each item in a sequence. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pipe for T
where T: ?Sized,

§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows 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) -> R
where R: 'a,

Mutably borrows 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
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows 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
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows 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
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
§

impl<T> Tap for T

§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .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
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .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
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
§

impl<T> TryConv for T

§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more