From 4efbe5083ddff2c657c2867e9d8eca6900530a51 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 2 Sep 2022 13:43:13 -0700 Subject: [PATCH 1/2] Add a test of long string getting wrapped --- tests/test_serde.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/test_serde.rs b/tests/test_serde.rs index 8fff4727..678f88df 100644 --- a/tests/test_serde.rs +++ b/tests/test_serde.rs @@ -11,6 +11,7 @@ use serde_derive::{Deserialize, Serialize}; use serde_yaml::{Mapping, Number, Value}; use std::collections::BTreeMap; use std::fmt::Debug; +use std::iter; fn test_serde(thing: &T, yaml: &str) where @@ -528,3 +529,23 @@ fn test_mapping() { test_serde(&thing, yaml); } + +#[test] +fn test_long_string() { + #[derive(Serialize, Deserialize, PartialEq, Debug)] + struct Data { + pub string: String, + } + + let thing = Data { + string: iter::repeat(["word", " "]).flatten().take(69).collect(), + }; + + let yaml = indoc! {" + string: word word word word word word word word word word word word word word word + word word word word word word word word word word word word word word word word + word word word word + "}; + + test_serde(&thing, yaml); +} From 53ccded41ae52fe49afcc37fb12ca3684ee706df Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Fri, 2 Sep 2022 13:44:27 -0700 Subject: [PATCH 2/2] Set width=-1 on libyaml emitter --- src/libyaml/emitter.rs | 1 + tests/test_serde.rs | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libyaml/emitter.rs b/src/libyaml/emitter.rs index 548185fc..a0ce25f8 100644 --- a/src/libyaml/emitter.rs +++ b/src/libyaml/emitter.rs @@ -70,6 +70,7 @@ impl<'a> Emitter<'a> { panic!("malloc error: {}", libyaml::Error::emit_error(emitter)); } sys::yaml_emitter_set_unicode(emitter, true); + sys::yaml_emitter_set_width(emitter, -1); addr_of_mut!((*owned.ptr).write).write(write); addr_of_mut!((*owned.ptr).write_error).write(None); sys::yaml_emitter_set_output(emitter, write_handler, owned.ptr.cast()); diff --git a/tests/test_serde.rs b/tests/test_serde.rs index 678f88df..a22c2ed4 100644 --- a/tests/test_serde.rs +++ b/tests/test_serde.rs @@ -542,9 +542,7 @@ fn test_long_string() { }; let yaml = indoc! {" - string: word word word word word word word word word word word word word word word - word word word word word word word word word word word word word word word word - word word word word + string: word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word "}; test_serde(&thing, yaml);