Skip to content

Commit 6afa275

Browse files
bors[bot]torkleyy
andcommitted
Merge #170
170: Ensure "Untagged tuple-like enum variants not deserializing correctly……" is fixed r=torkleyy a=torkleyy Fixes #117 cc @ebkalderon @vessd Co-authored-by: Thomas Schaller <[email protected]>
2 parents 3a0a7ff + e798cdb commit 6afa275

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

tests/117_untagged_tuple_variant.rs

+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
use std::borrow::Cow;
2+
3+
use ron::{de::from_str, ser::to_string};
4+
use serde::{Deserialize, Serialize};
5+
6+
#[derive(Debug, Deserialize, Eq, PartialEq, Serialize)]
7+
pub struct BuildSystem<'m> {
8+
version: Cow<'m, str>,
9+
flags: Vec<Flag<'m>>,
10+
}
11+
12+
#[derive(Debug, Deserialize, Eq, PartialEq, Serialize)]
13+
#[serde(untagged)]
14+
pub enum Flag<'m> {
15+
Value(Cow<'m, str>),
16+
If(Cow<'m, str>, Vec<Cow<'m, str>>),
17+
}
18+
19+
#[test]
20+
fn test_ebkalderon_case() {
21+
let file = r#"BuildSystem(
22+
version: "1.0.0",
23+
flags: [
24+
"--enable-thing",
25+
"--enable-other-thing",
26+
If("some-conditional", ["--enable-third-thing"]),
27+
]
28+
)
29+
"#;
30+
31+
assert_eq!(
32+
from_str::<BuildSystem>(file).unwrap(),
33+
BuildSystem {
34+
version: "1.0.0".into(),
35+
flags: vec![
36+
Flag::Value("--enable-thing".into()),
37+
Flag::Value("--enable-other-thing".into()),
38+
Flag::If(
39+
"some-conditional".into(),
40+
vec!["--enable-third-thing".into()]
41+
)
42+
]
43+
},
44+
);
45+
}
46+
47+
#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)]
48+
#[serde(untagged)]
49+
enum Foo {
50+
Bar(usize),
51+
}
52+
53+
#[test]
54+
fn test_vessd_case() {
55+
let foo_vec = vec![Foo::Bar(0); 5];
56+
let foo_str = to_string(&foo_vec).unwrap();
57+
assert_eq!(foo_str.as_str(), "[0,0,0,0,0,]");
58+
assert_eq!(from_str::<Vec<Foo>>(&foo_str).unwrap(), foo_vec);
59+
}

0 commit comments

Comments
 (0)