From 8341c01f7f83876315f8c53ebaefdb5391be8c6f Mon Sep 17 00:00:00 2001 From: Marco Hofstetter Date: Wed, 16 Nov 2022 11:02:13 +0100 Subject: [PATCH] fix unintended modification of source when parsing input file Signed-off-by: Marco Hofstetter --- pkg/gci/gci.go | 6 ++++-- pkg/gci/gci_test.go | 12 +++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/pkg/gci/gci.go b/pkg/gci/gci.go index 1bcdef2..a8f5bd0 100644 --- a/pkg/gci/gci.go +++ b/pkg/gci/gci.go @@ -156,8 +156,10 @@ func LoadFormatGoFile(file io.FileObj, cfg config.Config) (src, dist []byte, err } } - head := src[:headEnd] - tail := src[tailStart:] + head := make([]byte, headEnd) + copy(head, src[:headEnd]) + tail := make([]byte, len(src)-tailStart) + copy(tail, src[tailStart:]) head = append(head, utils.Linebreak) // add beginning of import block diff --git a/pkg/gci/gci_test.go b/pkg/gci/gci_test.go index 3d89aa0..5b4a944 100644 --- a/pkg/gci/gci_test.go +++ b/pkg/gci/gci_test.go @@ -1,13 +1,13 @@ package gci import ( - "io/ioutil" "os" "runtime" "strings" "testing" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "github.com/daixiang0/gci/pkg/config" "github.com/daixiang0/gci/pkg/io" @@ -44,11 +44,17 @@ func TestRun(t *testing.T) { t.Fatal(err) } - _, formattedFile, err := LoadFormatGoFile(io.File{FilePath: fileBaseName + ".in.go"}, *gciCfg) + inputSrcFile := io.File{FilePath: fileBaseName + ".in.go"} + inputSrc, err := inputSrcFile.Load() + require.NoError(t, err) + + unmodifiedFile, formattedFile, err := LoadFormatGoFile(inputSrcFile, *gciCfg) if err != nil { t.Fatal(err) } - expectedOutput, err := ioutil.ReadFile(fileBaseName + ".out.go") + assert.Equal(t, inputSrc, unmodifiedFile) + + expectedOutput, err := os.ReadFile(fileBaseName + ".out.go") if err != nil { t.Fatal(err) }