INNER CODE UNIT · Rust
parse
stjude-rust-labs/sprocket · crates/sprocket-test-types/src/lib.rs:80
pub fn parse(source: &str) -> Result<(Self, Diagnostics), Diagnostics> {
#[derive(Debug, Deserialize)]
#[serde(transparent)]
struct RawDocumentTests {
pub targets: IndexMap<Spanned<String>, Vec<Spanned<RawTestDefinition>>>,
}
let mut diagnostics = Diagnostics::default();
let raw: RawDocumentTests = match serde_saphyr::from_str(source) {
Ok(map) => map,
Err(_e) => {
// TODO(serial): create nice diagnostics from serde-saphyr
// errors
diagnostics.add(Diagnostic::error(
"expected test document to be a YAML mapping from target names to test \
definitions",
));
return Err(diagnostics);