in avro/src/schema.rs [5674:5738]
fn test_avro_3827_disallow_duplicate_field_names() -> TestResult {
let schema_str = r#"
{
"name": "my_schema",
"type": "record",
"fields": [
{
"name": "f1",
"type": {
"name": "a",
"type": "record",
"fields": []
}
}, {
"name": "f1",
"type": {
"name": "b",
"type": "record",
"fields": []
}
}
]
}
"#;
match Schema::parse_str(schema_str) {
Err(Error::FieldNameDuplicate(_)) => (),
other => {
return Err(format!("Expected Error::FieldNameDuplicate, got {other:?}").into());
}
};
let schema_str = r#"
{
"name": "my_schema",
"type": "record",
"fields": [
{
"name": "f1",
"type": {
"name": "a",
"type": "record",
"fields": [
{
"name": "f1",
"type": {
"name": "b",
"type": "record",
"fields": []
}
}
]
}
}
]
}
"#;
let expected = r#"{"name":"my_schema","type":"record","fields":[{"name":"f1","type":{"name":"a","type":"record","fields":[{"name":"f1","type":{"name":"b","type":"record","fields":[]}}]}}]}"#;
let schema = Schema::parse_str(schema_str)?;
let canonical_form = schema.canonical_form();
assert_eq!(canonical_form, expected);
Ok(())
}