Schema generation now never returns an error

This commit is contained in:
Graham Esau 2019-10-19 20:33:26 +01:00
parent 8880fb3961
commit 5bf8b30753
18 changed files with 167 additions and 160 deletions

View file

@ -0,0 +1,36 @@
mod util;
use schemars::{gen::SchemaGenerator, JsonSchema};
use std::ptr;
#[test]
fn dereference_i32() -> util::TestResult {
let mut gen = SchemaGenerator::default();
let i32_schema = gen.subschema_for::<i32>();
let dereferenced_once = gen.dereference_once(&i32_schema)?;
assert!(ptr::eq(dereferenced_once, &i32_schema));
let dereferenced = gen.dereference(&i32_schema)?;
assert!(ptr::eq(dereferenced, &i32_schema));
Ok(())
}
#[derive(Debug, JsonSchema)]
pub struct Struct {
foo: i32,
bar: bool,
}
#[test]
fn dereference_struct() -> util::TestResult {
let mut gen = SchemaGenerator::default();
let struct_ref_schema = gen.subschema_for::<Struct>();
let struct_schema = gen.definitions().get(&<Struct>::schema_name()).unwrap();
let dereferenced_once = gen.dereference_once(&struct_ref_schema)?;
assert!(ptr::eq(dereferenced_once, struct_schema));
let dereferenced = gen.dereference(&struct_ref_schema)?;
assert!(ptr::eq(dereferenced, struct_schema));
Ok(())
}

View file

@ -1,7 +1,6 @@
mod util;
use pretty_assertions::assert_eq;
use schemars::{schema_for, JsonSchema};
use util::*;
#[derive(Debug, JsonSchema)]
struct Flat {
@ -33,9 +32,8 @@ struct Deep3 {
}
#[test]
fn flatten_schema() -> TestResult {
let flat = schema_for!(Flat)?;
let deep = schema_for!(Deep1)?;
fn flatten_schema() {
let flat = schema_for!(Flat);
let deep = schema_for!(Deep1);
assert_eq!(flat, deep);
Ok(())
}

View file

@ -8,13 +8,13 @@ pub type TestResult = Result<(), Box<dyn Error>>;
#[allow(dead_code)] // https://github.com/rust-lang/rust/issues/46379
pub fn test_generated_schema<T: JsonSchema>(file: &str, settings: SchemaSettings) -> TestResult {
let actual = settings.into_generator().into_root_schema_for::<T>()?;
let actual = settings.into_generator().into_root_schema_for::<T>();
test_schema(&actual, file)
}
#[allow(dead_code)] // https://github.com/rust-lang/rust/issues/46379
pub fn test_default_generated_schema<T: JsonSchema>(file: &str) -> TestResult {
let actual = schema_for!(T)?;
let actual = schema_for!(T);
test_schema(&actual, file)
}