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 "