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 8fff4727..a22c2ed4 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,21 @@ 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); +}