summaryrefslogtreecommitdiffstats
path: root/vendor/basic-toml/tests/display-tricky.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/basic-toml/tests/display-tricky.rs')
-rw-r--r--vendor/basic-toml/tests/display-tricky.rs53
1 files changed, 53 insertions, 0 deletions
diff --git a/vendor/basic-toml/tests/display-tricky.rs b/vendor/basic-toml/tests/display-tricky.rs
new file mode 100644
index 000000000..274b380e9
--- /dev/null
+++ b/vendor/basic-toml/tests/display-tricky.rs
@@ -0,0 +1,53 @@
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Recipe {
+ pub name: String,
+ pub description: Option<String>,
+ #[serde(default)]
+ pub modules: Vec<Modules>,
+ #[serde(default)]
+ pub packages: Vec<Packages>,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Modules {
+ pub name: String,
+ pub version: Option<String>,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+pub struct Packages {
+ pub name: String,
+ pub version: Option<String>,
+}
+
+#[test]
+fn both_ends() {
+ let recipe_works = basic_toml::from_str::<Recipe>(
+ r#"
+ name = "testing"
+ description = "example"
+ modules = []
+
+ [[packages]]
+ name = "base"
+ "#,
+ )
+ .unwrap();
+ basic_toml::to_string(&recipe_works).unwrap();
+
+ let recipe_fails = basic_toml::from_str::<Recipe>(
+ r#"
+ name = "testing"
+ description = "example"
+ packages = []
+
+ [[modules]]
+ name = "base"
+ "#,
+ )
+ .unwrap();
+ let err = basic_toml::to_string(&recipe_fails).unwrap_err();
+ assert_eq!(err.to_string(), "values must be emitted before tables");
+}