diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2024-08-28 01:19:29 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-08-28 00:19:29 +0000 |
commit | b1b72a8a4943f9c40e253f243f9b77abf67b3faf (patch) | |
tree | 81753ff60e7a0ac0b07cab1e00dcfcdc8c8fbeab | |
parent | bb26fef4946e16a9b9916f61786416523d173e8a (diff) |
test: add supporting for ignoring spec tests (#25242)
You can now specify `"ignore": true` for either the whole file,
concrete test, or concrete step.
-rw-r--r-- | tests/specs/mod.rs | 14 | ||||
-rw-r--r-- | tests/specs/schema.json | 9 |
2 files changed, 22 insertions, 1 deletions
diff --git a/tests/specs/mod.rs b/tests/specs/mod.rs index 7a3572a94..9565aa71f 100644 --- a/tests/specs/mod.rs +++ b/tests/specs/mod.rs @@ -56,6 +56,8 @@ struct MultiTestMetaData { pub cwd: Option<String>, #[serde(default)] pub tests: BTreeMap<String, JsonMap>, + #[serde(default)] + pub ignore: bool, } impl MultiTestMetaData { @@ -90,6 +92,9 @@ impl MultiTestMetaData { } } } + if multi_test_meta_data.ignore && !value.contains_key("ignore") { + value.insert("ignore".to_string(), true.into()); + } } let mut collected_tests = Vec::with_capacity(self.tests.len()); @@ -125,6 +130,8 @@ struct MultiStepMetaData { pub repeat: Option<usize>, #[serde(default)] pub steps: Vec<StepMetaData>, + #[serde(default)] + pub ignore: bool, } #[derive(Clone, Deserialize)] @@ -138,6 +145,8 @@ struct SingleTestMetaData { pub repeat: Option<usize>, #[serde(flatten)] pub step: StepMetaData, + #[serde(default)] + pub ignore: bool, } impl SingleTestMetaData { @@ -149,6 +158,7 @@ impl SingleTestMetaData { repeat: self.repeat, envs: Default::default(), steps: vec![self.step], + ignore: self.ignore, } } } @@ -236,7 +246,9 @@ fn run_test(test: &CollectedTest<serde_json::Value>) -> TestResult { let diagnostic_logger = Rc::new(RefCell::new(Vec::<u8>::new())); let result = TestResult::from_maybe_panic_or_result(AssertUnwindSafe(|| { let metadata = deserialize_value(metadata_value); - if let Some(repeat) = metadata.repeat { + if metadata.ignore { + TestResult::Ignored + } else if let Some(repeat) = metadata.repeat { TestResult::SubTests( (0..repeat) .map(|i| { diff --git a/tests/specs/schema.json b/tests/specs/schema.json index bf57b4826..8f3953ee4 100644 --- a/tests/specs/schema.json +++ b/tests/specs/schema.json @@ -50,6 +50,9 @@ }, "exitCode": { "type": "integer" + }, + "ignore": { + "type": "boolean" } } }, @@ -77,6 +80,9 @@ "items": { "$ref": "#/definitions/single_test" } + }, + "ignore": { + "type": "boolean" } } }, { @@ -126,6 +132,9 @@ "additionalProperties": { "$ref": "#/definitions/single_or_multi_step_test" } + }, + "ignore": { + "type": "boolean" } } } |