diff options
author | Hubert Figuière <hub@figuiere.net> | 2023-08-30 21:33:34 -0400 |
---|---|---|
committer | Hubert Figuière <hub@figuiere.net> | 2023-12-31 19:57:10 -0500 |
commit | e601eb27cb328d0e4b8e8a5f9ffb9f0861e1303d (patch) | |
tree | 90938981d45b2a8ee9b89c13ede78fe196eaf39b | |
parent | f173507a866b25342c1fb531e00b8b972360b7b5 (diff) |
testsuite: allow loading fragments
-rw-r--r-- | tests/testsuite.rs | 29 |
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!( |