wasmsh_testkit/
toml_case.rs1use serde::Deserialize;
12use std::collections::HashMap;
13
14#[derive(Debug, Clone, Deserialize)]
16pub struct TomlTestFile {
17 pub test: TestMeta,
18 #[serde(default)]
19 pub setup: TestSetup,
20 pub input: TestInput,
21 #[serde(default)]
22 pub expect: TestExpect,
23 #[serde(default)]
24 pub oracle: Option<OracleConfig>,
25 #[serde(default)]
26 pub known_divergence: Option<KnownDivergence>,
27}
28
29#[derive(Debug, Clone, Deserialize)]
31pub struct TestMeta {
32 pub name: String,
33 #[serde(default)]
34 pub tags: Vec<String>,
35 #[serde(default = "default_tier")]
36 pub tier: String,
37 #[serde(default)]
38 pub requires: Vec<String>,
39 #[serde(default = "default_class")]
41 pub class: String,
42 #[serde(default = "default_stage")]
44 pub stage: String,
45}
46
47fn default_tier() -> String {
48 "P0".into()
49}
50
51fn default_class() -> String {
52 "normative-posix".into()
53}
54
55fn default_stage() -> String {
56 "core".into()
57}
58
59#[derive(Debug, Clone, Default, Deserialize)]
61pub struct TestSetup {
62 #[serde(default)]
63 pub files: HashMap<String, String>,
64 #[serde(default)]
65 pub env: HashMap<String, String>,
66}
67
68#[derive(Debug, Clone, Deserialize)]
70pub struct TestInput {
71 #[serde(default)]
72 pub script: Option<String>,
73 #[serde(default)]
74 pub script_file: Option<String>,
75}
76
77#[derive(Debug, Clone, Default, Deserialize)]
79pub struct TestExpect {
80 pub status: Option<i32>,
81 pub stdout: Option<String>,
82 pub stdout_contains: Option<Vec<String>>,
83 pub stdout_regex: Option<String>,
84 pub stderr: Option<String>,
85 pub stderr_contains: Option<Vec<String>>,
86 #[serde(default)]
88 pub files: HashMap<String, String>,
89 #[serde(default)]
91 pub env: HashMap<String, String>,
92 #[serde(default)]
94 pub max_time_ms: u64,
95}
96
97#[derive(Debug, Clone, Deserialize)]
99pub struct OracleConfig {
100 #[serde(default)]
101 pub compare: bool,
102 #[serde(default)]
103 pub shells: Vec<String>,
104 #[serde(default)]
105 pub ignore_stderr: bool,
106}
107
108#[derive(Debug, Clone, Deserialize)]
110pub struct KnownDivergence {
111 pub id: String,
112 pub description: String,
113 #[serde(default)]
114 pub wasmsh_behavior: String,
115 #[serde(default)]
116 pub reference_behavior: String,
117}