Skip to content

Commit 22f60d1

Browse files
committed
Add regression test for tafia#580
---- issue580 stdout ---- thread 'issue580' panicked at tests/serde-issues.rs:412:10: called `Result::unwrap()` on an `Err` value: Custom("invalid length 0, expected tuple struct Wrapper with 1 element") note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace failures: issue580
1 parent 3d5ed69 commit 22f60d1

File tree

1 file changed

+39
-1
lines changed

1 file changed

+39
-1
lines changed

tests/serde-issues.rs

+39-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use pretty_assertions::assert_eq;
66
use quick_xml::de::from_str;
77
use quick_xml::se::{to_string, to_string_with_root};
8-
use serde::{Deserialize, Serialize};
8+
use serde::{Deserialize, Deserializer, Serialize};
99
use std::collections::HashMap;
1010

1111
/// Regression tests for https://github.com/tafia/quick-xml/issues/252.
@@ -377,3 +377,41 @@ fn issue540() {
377377
"<root><Variant/></root>"
378378
);
379379
}
380+
381+
/// Regression test for https://github.com/tafia/quick-xml/issues/580.
382+
#[test]
383+
fn issue580() {
384+
#[derive(Debug, Deserialize, PartialEq, Eq)]
385+
struct Seq {
386+
#[serde(rename = "$value")]
387+
items: Vec<Wrapper>,
388+
}
389+
390+
#[derive(Debug, Deserialize, PartialEq, Eq)]
391+
struct Wrapper(#[serde(deserialize_with = "Item::parse")] Item);
392+
393+
#[derive(Debug, PartialEq, Eq)]
394+
struct Item;
395+
impl Item {
396+
fn parse<'de, D>(_deserializer: D) -> Result<Self, D::Error>
397+
where
398+
D: Deserializer<'de>,
399+
{
400+
Ok(Item)
401+
}
402+
}
403+
404+
assert_eq!(
405+
from_str::<Seq>(
406+
r#"
407+
<Seq>
408+
<One/>
409+
<Two/>
410+
</Seq>"#
411+
)
412+
.unwrap(),
413+
Seq {
414+
items: vec![Wrapper(Item), Wrapper(Item)],
415+
}
416+
);
417+
}

0 commit comments

Comments
 (0)