summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2024-08-28 01:19:29 +0100
committerGitHub <noreply@github.com>2024-08-28 00:19:29 +0000
commitb1b72a8a4943f9c40e253f243f9b77abf67b3faf (patch)
tree81753ff60e7a0ac0b07cab1e00dcfcdc8c8fbeab
parentbb26fef4946e16a9b9916f61786416523d173e8a (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.rs14
-rw-r--r--tests/specs/schema.json9
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"
}
}
}