Skip to main content

varar_core/
result.rs

1//! Immutable run-result records — port of `result.ts` / `Result.java`. The
2//! persisted `.var/<spec>.json` file is a serialized [`SpecResults`].
3
4/// A doc-string / cell mismatch as a source-offset range plus the runtime value.
5/// `from`/`to` are absolute UTF-16 source offsets; `to` is exclusive.
6#[derive(Clone, Debug, PartialEq, Eq)]
7pub struct CellFailure {
8    pub from: usize,
9    pub to: usize,
10    pub actual: String,
11}
12
13impl CellFailure {
14    pub fn new(from: usize, to: usize, actual: impl Into<String>) -> CellFailure {
15        CellFailure {
16            from,
17            to,
18            actual: actual.into(),
19        }
20    }
21}
22
23/// An example's run outcome.
24#[derive(Clone, Copy, Debug, PartialEq, Eq)]
25pub enum Status {
26    Passed,
27    Failed,
28}
29
30/// The failure payload of a failed [`ExampleResult`]. `cells`/`doc` are `None`
31/// when not applicable. `line` may be a caller-supplied fallback (`-1`).
32#[derive(Clone, Debug, PartialEq, Eq)]
33pub struct ExampleFailure {
34    pub line: i64,
35    pub message: String,
36    pub stack: String,
37    pub cells: Option<Vec<CellFailure>>,
38    pub doc: Option<CellFailure>,
39}
40
41/// The run result for one BDD example.
42#[derive(Clone, Debug, PartialEq, Eq)]
43pub struct ExampleResult {
44    pub name: String,
45    pub status: Status,
46    pub lines: Vec<usize>,
47    pub failure: Option<ExampleFailure>,
48}
49
50/// The persisted run result for one spec file.
51#[derive(Clone, Debug, PartialEq, Eq)]
52pub struct SpecResults {
53    pub version: u32,
54    pub spec_path: String,
55    pub source_hash: String,
56    pub examples: Vec<ExampleResult>,
57}