summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHubert Figuière <hub@figuiere.net>2023-08-30 21:33:34 -0400
committerHubert Figuière <hub@figuiere.net>2023-12-31 19:57:10 -0500
commite601eb27cb328d0e4b8e8a5f9ffb9f0861e1303d (patch)
tree90938981d45b2a8ee9b89c13ede78fe196eaf39b
parentf173507a866b25342c1fb531e00b8b972360b7b5 (diff)
testsuite: allow loading fragments
-rw-r--r--tests/testsuite.rs29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/testsuite.rs b/tests/testsuite.rs
index 03fae7f..59d80e4 100644
--- a/tests/testsuite.rs
+++ b/tests/testsuite.rs
@@ -381,6 +381,33 @@ impl TestSuite {
}
}
}
+
+ /// Load test fragment as generated by test gen.
+ fn load_fragments<P>(&mut self, path: P) -> Option<usize>
+ where
+ P: AsRef<Path>,
+ {
+ let path = path.as_ref();
+ if !path.is_dir() {
+ return None;
+ }
+ let mut count = 0;
+ for entry in path.read_dir().ok()? {
+ if let Some(test) = entry.ok().and_then(|entry| {
+ let path = entry.path();
+ let file = std::fs::File::open(path).ok()?;
+ let config = serde_xml_rs::ParserConfig::new().trim_whitespace(false);
+ let event_reader = serde_xml_rs::EventReader::new_with_config(file, config);
+
+ Test::deserialize(&mut Deserializer::new(event_reader)).ok()
+ }) {
+ self.tests.push(test);
+ count += 1;
+ }
+ }
+
+ Some(count)
+ }
}
/// Test statistics
@@ -424,6 +451,8 @@ fn test_regression_suite() {
testsuite.load_overrides("testsuite/testsuite.xml.overrides");
+ testsuite.load_fragments("testsuite/testsuite.d");
+
testsuite.run();
println!(