From 92156fe42ae0c04b52f6441324a5c7f7e6fcbae8 Mon Sep 17 00:00:00 2001 From: yuangongji Date: Wed, 19 Aug 2020 11:31:01 +0800 Subject: [PATCH] file:Fix SaveTo method, the whitespaces are missing --- file.go | 2 ++ file_test.go | 19 +++++++++++++++++++ testdata/TestFile_WriteTo.golden | 2 +- 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/file.go b/file.go index 2fcd8de..7eecaca 100644 --- a/file.go +++ b/file.go @@ -454,6 +454,8 @@ func (f *File) writeToBuffer(indent string) (*bytes.Buffer, error) { val = `"""` + val + `"""` } else if !f.options.IgnoreInlineComment && strings.ContainsAny(val, "#;") { val = "`" + val + "`" + } else if len(strings.TrimSpace(val)) != len(val) { + val = `"` + val + `"` } if _, err := buf.WriteString(equalSign + val + LineBreak); err != nil { return nil, err diff --git a/file_test.go b/file_test.go index ef44a52..02fdfed 100644 --- a/file_test.go +++ b/file_test.go @@ -437,6 +437,25 @@ test = `) }) + + Convey("Keep leading and trailing spaces in value", t, func() { + f, _ := ini.Load([]byte(`[foo] +bar1 = ' val ue1 ' +bar2 = """ val ue2 """ +bar3 = " val ue3 " +`)) + So(f, ShouldNotBeNil) + + var buf bytes.Buffer + _, err := f.WriteTo(&buf) + So(err, ShouldBeNil) + So(buf.String(),ShouldEqual,`[foo] +bar1 = " val ue1 " +bar2 = " val ue2 " +bar3 = " val ue3 " + +`) + }) } func TestFile_SaveTo(t *testing.T) { diff --git a/testdata/TestFile_WriteTo.golden b/testdata/TestFile_WriteTo.golden index 1b28686..885924f 100644 --- a/testdata/TestFile_WriteTo.golden +++ b/testdata/TestFile_WriteTo.golden @@ -84,5 +84,5 @@ true = 2+3=5 ADDRESS = """404 road, NotFound, State, 50000""" two_lines = how about continuation lines? -lots_of_lines = 1 2 3 4 +lots_of_lines = "1 2 3 4 "