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/// One mismatched CELL 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` is `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}
39
40/// The run result for one BDD example.
41#[derive(Clone, Debug, PartialEq, Eq)]
42pub struct ExampleResult {
43    pub name: String,
44    pub status: Status,
45    pub lines: Vec<usize>,
46    pub failure: Option<ExampleFailure>,
47}
48
49/// The persisted run result for one spec file.
50#[derive(Clone, Debug, PartialEq, Eq)]
51pub struct SpecResults {
52    pub version: u32,
53    pub spec_path: String,
54    pub source_hash: String,
55    pub examples: Vec<ExampleResult>,
56}