aboutsummaryrefslogtreecommitdiffstats
path: root/plumbing/object/patch_stats_test.go
diff options
context:
space:
mode:
authorDaniel Moch <daniel@danielmoch.com>2023-11-24 12:29:45 -0500
committerDaniel Moch <daniel@danielmoch.com>2023-11-27 19:36:37 -0500
commitaebf868d2a557384539cf91476d21901ab378643 (patch)
treef4d0ef4af91cf439c9020408179dd7e22f05c9c1 /plumbing/object/patch_stats_test.go
parentfecea417bfc18648757a1bde30ca384548b55197 (diff)
downloadgo-git-aebf868d2a557384539cf91476d21901ab378643.tar.gz
plumbing: object, enable renames in getFileStatsFromFilePatches
Diff has handled renames by default since 2020. This change sets Name for the renamed file in a manner similar to diffstat.
Diffstat (limited to 'plumbing/object/patch_stats_test.go')
-rw-r--r--plumbing/object/patch_stats_test.go54
1 files changed, 54 insertions, 0 deletions
diff --git a/plumbing/object/patch_stats_test.go b/plumbing/object/patch_stats_test.go
new file mode 100644
index 0000000..f393c30
--- /dev/null
+++ b/plumbing/object/patch_stats_test.go
@@ -0,0 +1,54 @@
+package object_test
+
+import (
+ "time"
+
+ "github.com/go-git/go-billy/v5/memfs"
+ "github.com/go-git/go-billy/v5/util"
+ "github.com/go-git/go-git/v5"
+ "github.com/go-git/go-git/v5/plumbing/object"
+ "github.com/go-git/go-git/v5/storage/memory"
+
+ fixtures "github.com/go-git/go-git-fixtures/v4"
+ . "gopkg.in/check.v1"
+)
+
+type PatchStatsSuite struct {
+ fixtures.Suite
+}
+
+var _ = Suite(&PatchStatsSuite{})
+
+func (s *PatchStatsSuite) TestStatsWithRename(c *C) {
+ cm := &git.CommitOptions{
+ Author: &object.Signature{Name: "Foo", Email: "foo@example.local", When: time.Now()},
+ }
+
+ fs := memfs.New()
+ r, err := git.Init(memory.NewStorage(), fs)
+ c.Assert(err, IsNil)
+
+ w, err := r.Worktree()
+ c.Assert(err, IsNil)
+
+ util.WriteFile(fs, "foo", []byte("foo\nbar\n"), 0644)
+
+ _, err = w.Add("foo")
+ c.Assert(err, IsNil)
+
+ _, err = w.Commit("foo\n", cm)
+ c.Assert(err, IsNil)
+
+ _, err = w.Move("foo", "bar")
+ c.Assert(err, IsNil)
+
+ hash, err := w.Commit("rename foo to bar", cm)
+ c.Assert(err, IsNil)
+
+ commit, err := r.CommitObject(hash)
+ c.Assert(err, IsNil)
+
+ fileStats, err := commit.Stats()
+ c.Assert(err, IsNil)
+ c.Assert(fileStats[0].Name, Equals, "foo => bar")
+}