-
Notifications
You must be signed in to change notification settings - Fork 0
/
push_test.go
113 lines (86 loc) · 3.4 KB
/
push_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
package git_test
import (
"fmt"
"testing"
git "github.com/purpleclay/gitz"
"github.com/purpleclay/gitz/gittest"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestPush(t *testing.T) {
gittest.InitRepository(t, gittest.WithLocalCommits("testing git push"))
client, _ := git.NewClient()
out, err := client.Push()
require.NoError(t, err)
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", gittest.DefaultBranch))
remoteLog := gittest.RemoteLog(t)
require.Equal(t, "testing git push", remoteLog[0].Message)
}
func TestPushWithPushOptions(t *testing.T) {
gittest.InitRepository(t, gittest.WithLocalCommits("testing git push options"))
client, _ := git.NewClient()
_, err := client.Push(git.WithPushOptions("option1", "option2"))
require.NoError(t, err)
}
func TestPushResolveBranchError(t *testing.T) {
nonWorkingDirectory(t)
client, _ := git.NewClient()
_, err := client.Push()
assert.Error(t, err)
}
func TestPushAwareOfCurrentBranch(t *testing.T) {
log := "(HEAD -> branch-aware, main, origin/main) chore: finished scaffolding project"
gittest.InitRepository(t,
gittest.WithLog(log),
gittest.WithLocalCommits("this should be pushed on current branch"))
client, _ := git.NewClient()
out, err := client.Push()
require.NoError(t, err)
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "branch-aware"))
}
func TestPushWithAllBranches(t *testing.T) {
log := "(main, local-branch-1, local-branch-2) feat: can push all branches"
gittest.InitRepository(t, gittest.WithLog(log))
gittest.Tag(t, "0.1.0")
client, _ := git.NewClient()
out, err := client.Push(git.WithAllBranches())
require.NoError(t, err)
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "main"))
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "local-branch-1"))
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "local-branch-2"))
assert.NotContains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "0.1.0"))
}
func TestPushWithAllTags(t *testing.T) {
log := "(main) feat: can push all tags"
gittest.InitRepository(t, gittest.WithLog(log))
gittest.Tag(t, "0.1.0")
gittest.Tag(t, "0.2.0")
client, _ := git.NewClient()
out, err := client.Push(git.WithAllTags())
require.NoError(t, err)
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "0.1.0"))
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "0.2.0"))
assert.NotContains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "main"))
}
func TestPushWithRefSpecs(t *testing.T) {
log := "(main, local-branch-3, local-branch-4) feat: can cherry-pick push"
gittest.InitRepository(t, gittest.WithLog(log))
gittest.Tag(t, "0.3.0")
gittest.Tag(t, "0.4.0")
client, _ := git.NewClient()
out, err := client.Push(git.WithRefSpecs("0.3.0", "local-branch-3"))
require.NoError(t, err)
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "0.3.0"))
assert.Contains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "local-branch-3"))
assert.NotContains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "0.4.0"))
assert.NotContains(t, out, fmt.Sprintf("%[1]s -> %[1]s", "local-branch-4"))
}
func TestPushWithDeleteRefSpecs(t *testing.T) {
log := "(tag: 0.1.0, tag: 0.2.0) feat: recreate user data indexes for speedier queries"
gittest.InitRepository(t, gittest.WithLog(log))
client, _ := git.NewClient()
_, err := client.Push(git.WithDeleteRefSpecs("0.2.0"))
require.NoError(t, err)
remoteTags := gittest.RemoteTags(t)
assert.ElementsMatch(t, []string{"0.1.0"}, remoteTags)
}