all repos

mugit @ 3e7e955

🐮 git server that your cow will love

mugit/internal/git/compare_test.go (view raw)

Oleksandr Smirnov Oleksandr Smirnov
olexsmir@gmail.com
feat: compare refs (#9)..., 1 month ago
1
package git
2
3
import (
4
	"testing"
5
6
	"olexsmir.xyz/x/is"
7
)
8
9
func TestRepo_Compare(t *testing.T) {
10
	t.Run("compares two refs", func(t *testing.T) {
11
		r := newTestRepo(t)
12
		base := r.commitFile("README.md", "base\n", "base commit")
13
		r.createBranch("develop", base)
14
15
		r.commitFile("master.txt", "master only\n", "master change")
16
		r.checkoutBranch("develop", false)
17
		r.commitFile("develop.txt", "develop only\n", "develop change")
18
19
		cmp, err := r.open().Compare("master", "develop")
20
		is.Err(t, err, nil)
21
		is.Equal(t, cmp.BaseRef, "master")
22
		is.Equal(t, cmp.HeadRef, "develop")
23
		is.Equal(t, cmp.Behind, 1)
24
		is.Equal(t, cmp.Ahead, 1)
25
		is.Equal(t, cmp.MergeBase, base.String())
26
		is.Equal(t, len(cmp.Commits), 1)
27
		is.Equal(t, cmp.Commits[0].Message, "develop change")
28
		is.Equal(t, cmp.Diff.Stat.FilesChanged, 1)
29
		is.Equal(t, cmp.Diff.Diff[0].Name.New, "develop.txt")
30
	})
31
32
	t.Run("returns empty range when refs are equal", func(t *testing.T) {
33
		r := newTestRepo(t)
34
		r.commitFile("README.md", "base\n", "base commit")
35
36
		cmp, err := r.open().Compare("master", "master")
37
		is.Err(t, err, nil)
38
		is.Equal(t, cmp.Behind, 0)
39
		is.Equal(t, cmp.Ahead, 0)
40
		is.Equal(t, len(cmp.Commits), 0)
41
		is.Equal(t, cmp.Diff.Stat.FilesChanged, 0)
42
	})
43
44
	t.Run("fails on invalid ref", func(t *testing.T) {
45
		r := newTestRepo(t)
46
		r.commitFile("README.md", "base\n", "base commit")
47
48
		_, err := r.open().Compare("master", "does-not-exist")
49
		is.Err(t, err, "resolving head ref")
50
	})
51
}