diff --git a/crates/data/assets/toml-test b/crates/data/assets/toml-test index d1360d4..42c577f 160000 --- a/crates/data/assets/toml-test +++ b/crates/data/assets/toml-test @@ -1 +1 @@ -Subproject commit d1360d4536989e5a9383579d47ef9a10291aa565 +Subproject commit 42c577ff9a556851b24093d5d0b77ba8116fbf5e diff --git a/crates/data/examples/dump.rs b/crates/data/examples/dump.rs new file mode 100644 index 0000000..827e52e --- /dev/null +++ b/crates/data/examples/dump.rs @@ -0,0 +1,10 @@ +fn main() { + let versions = toml_test_data::versions(); + println!("{versions:#?}"); + + let valid = toml_test_data::valid().collect::>(); + println!("{valid:#?}"); + + let invalid = toml_test_data::invalid().collect::>(); + println!("{invalid:#?}"); +} diff --git a/crates/data/src/lib.rs b/crates/data/src/lib.rs index a5145d4..41d038b 100644 --- a/crates/data/src/lib.rs +++ b/crates/data/src/lib.rs @@ -3,6 +3,31 @@ const TESTS_DIR: include_dir::Dir = include_dir::include_dir!("$CARGO_MANIFEST_DIR/assets/toml-test/tests"); +pub fn version(ver: &str) -> impl Iterator { + TESTS_DIR + .get_file(&format!("files-toml-{ver}")) + .and_then(|f| std::str::from_utf8(f.contents()).ok()) + .into_iter() + .flat_map(|f| f.lines()) + .map(std::path::Path::new) +} + +pub fn versions() -> std::collections::HashMap<&'static str, Vec<&'static std::path::Path>> { + TESTS_DIR + .files() + .filter_map(|f| { + let name = f.path().file_name()?; + let version = name.to_str()?.strip_prefix("files-toml-")?; + let paths = std::str::from_utf8(f.contents()) + .ok()? + .lines() + .map(std::path::Path::new) + .collect::>(); + Some((version, paths)) + }) + .collect() +} + #[derive(Debug, Copy, Clone, PartialEq, Eq)] pub struct Valid<'a> { pub name: &'a std::path::Path,