pub enum Exercised {
NotApplicable,
NotExercised,
Exercised,
}Expand description
Whether a metric actually evaluated anything for this test.
Orthogonal to passed, and deliberately not folded into it. Assertion-based verification
settled this decades ago: an assertion with zero attempts is a coverage hole with no
verification value, so every assert is paired with a companion cover confirming it was
genuinely exercised rather than vacuously passed. passed answers “did the check hold”;
this answers “was there a check to hold”.
The distinction is load-bearing here because the runner evaluates all thirteen registered
metrics against every test, and a metric that does not handle a test’s Expected variant used
to return pass(1.0) — indistinguishable from a metric that ran and was satisfied.
NotExercised is a status and never a failure. Over-eager vacuity detection earns a
suppression and takes real findings with it (Beer et al. on temporal antecedent failure), so
this reports rather than decides.
Variants§
NotApplicable
The metric does not handle this test’s Expected variant. Nothing was checked.
NotExercised
The metric applies, but the data it needs never appeared in this run, so its antecedent
never fired. A trace_must_not_call_tool naming a tool the agent never had is the shape:
syntactically perfect, permanently vacuous for this trace.
Exercised
Genuinely evaluated against the response.
Implementations§
Source§impl Exercised
impl Exercised
Sourcepub const fn label(self) -> &'static str
pub const fn label(self) -> &'static str
The stable string for this value in details["metrics"][…]["exercised"].
A vocabulary, not a Debug rendering: it reaches run.json, so it is an interface. It
lives on the enum rather than beside the writer because there is now a reader —
crate::report::exercised — and a reader with its own copy of "not_exercised" would
match nothing the day the spelling moved, reporting a clean run instead of a broken one.
Trait Implementations§
impl Copy for Exercised
impl Eq for Exercised
impl StructuralPartialEq for Exercised
Auto Trait Implementations§
impl Freeze for Exercised
impl RefUnwindSafe for Exercised
impl Send for Exercised
impl Sync for Exercised
impl Unpin for Exercised
impl UnsafeUnpin for Exercised
impl UnwindSafe for Exercised
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more