pub enum ProofState {
Proven,
InputsUnchanged,
Stale,
Failing,
NotRun,
Unrunnable,
NoTest,
}Expand description
What the repository can say about one claim’s proof, right now.
Ordered from strongest to weakest, so a summary that sorts by this reads as a ranking.
use majordomus_cli::evidence::ProofState;
let mut states = vec![ProofState::NotRun, ProofState::Stale, ProofState::Proven];
states.sort();
assert_eq!(
states,
vec![ProofState::Proven, ProofState::Stale, ProofState::NotRun]
);
// the two strongest are deliberately not one state: `inputs unchanged` is the absence
// of a known invalidation, and collapsing it into `proven` is the unaccountable badge
assert_ne!(ProofState::Proven, ProofState::InputsUnchanged);
assert!(ProofState::Proven < ProofState::InputsUnchanged);
assert!(ProofState::InputsUnchanged.passing());§Example
use majordomus_cli::evidence::ProofState;
assert!(ProofState::Proven.passing());
assert!(!ProofState::NotRun.passing());
assert!(!ProofState::InputsUnchanged.meaning().is_empty());Variants§
Proven
A passing run, and nothing has changed since it — the diff against the execution’s own commit is empty but for the ledger. Proof of the tree in front of you.
InputsUnchanged
A passing run, and nothing this claim names has changed since. Not proof at HEAD: something the claim does not name may have broken it.
Stale
A passing run, but something this claim names has changed since. The proof is older than its subject.
Failing
The latest run of this claim’s test did not pass.
NotRun
The claim names a test a runner owns, and no run of it has ever been recorded.
Unrunnable
The claim names a path no runner in this repository drives. Nothing can record it, so nothing can prove it this way.
NoTest
The claim names no test at all. Correct for a planned or rejected claim, and a
defect for any other.
Implementations§
Source§impl ProofState
impl ProofState
Sourcepub fn label(self) -> &'static str
pub fn label(self) -> &'static str
The word every surface prints for this state, and the key the report’s totals are counted under.
One spelling, defined here, so that the badge, the terminal rendering and the JSON cannot disagree about what they are showing the same reader.
use majordomus_cli::evidence::ProofState;
assert_eq!(ProofState::Proven.label(), "proven");
assert_eq!(ProofState::InputsUnchanged.label(), "inputs unchanged");
assert_ne!(ProofState::Proven.label(), ProofState::InputsUnchanged.label());Sourcepub fn token(self) -> &'static str
pub fn token(self) -> &'static str
The design-token word for this state: its serialised name with _ written as -.
A surface that colours a state asks for its token and nothing else, so the mapping from a state to a design token is this one spelling rather than a table in each renderer.
use majordomus_cli::evidence::ProofState;
assert_eq!(ProofState::Proven.token(), "proven");
assert_eq!(ProofState::InputsUnchanged.token(), "inputs-unchanged");
assert_eq!(ProofState::NoTest.token(), "no-test");Sourcepub fn meaning(self) -> &'static str
pub fn meaning(self) -> &'static str
One sentence: what the state means, for the reader who clicked the badge. This is the derivation, in words, and it lives here so that every surface says the same thing rather than each inventing its own gloss.
The sentence for ProofState::InputsUnchanged is the one that has to be carried
everywhere, because it is the state a surface is tempted to render as a plain green.
use majordomus_cli::evidence::ProofState;
let m = ProofState::InputsUnchanged.meaning();
assert!(m.contains("not proof against the current commit"), "{m}");
assert_ne!(m, ProofState::Proven.meaning());Sourcepub fn passing(self) -> bool
pub fn passing(self) -> bool
Does this state carry a passing execution behind it, of any freshness?
Freshness and outcome are two questions, and this answers only the second. A count of passing claims is honest; a count that called them all proven would not be.
use majordomus_cli::evidence::ProofState;
assert!(ProofState::Proven.passing());
assert!(ProofState::Stale.passing(), "a pass older than its subject is still a pass");
assert!(!ProofState::Failing.passing());
assert!(!ProofState::NotRun.passing());
assert!(!ProofState::Unrunnable.passing());Trait Implementations§
Source§impl Clone for ProofState
impl Clone for ProofState
Source§fn clone(&self) -> ProofState
fn clone(&self) -> ProofState
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ProofState
Source§impl Debug for ProofState
impl Debug for ProofState
Source§impl<'de> Deserialize<'de> for ProofState
impl<'de> Deserialize<'de> for ProofState
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for ProofState
Source§impl JsonSchema for ProofState
impl JsonSchema for ProofState
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreSource§impl Ord for ProofState
impl Ord for ProofState
Source§fn cmp(&self, other: &ProofState) -> Ordering
fn cmp(&self, other: &ProofState) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Source§impl PartialEq for ProofState
impl PartialEq for ProofState
Source§fn eq(&self, other: &ProofState) -> bool
fn eq(&self, other: &ProofState) -> bool
self and other values to be equal, and is used by ==.Source§impl PartialOrd for ProofState
impl PartialOrd for ProofState
Source§impl Serialize for ProofState
impl Serialize for ProofState
impl StructuralPartialEq for ProofState
Auto Trait Implementations§
impl Freeze for ProofState
impl RefUnwindSafe for ProofState
impl Send for ProofState
impl Sync for ProofState
impl Unpin for ProofState
impl UnsafeUnpin for ProofState
impl UnwindSafe for ProofState
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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.