Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitaly.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2020-09-21 12:08:24 +0300
committerPatrick Steinhardt <psteinhardt@gitlab.com>2020-09-21 12:08:24 +0300
commit6ed54e07456297ee4d026dd60eeff29c8edf2cb8 (patch)
treec1e9a6d771d7a2ffd0c11ddcb66d1d66963788f8 /internal/git2go
parent295c3b7c65a88205a4aef33e6ad0e625d7ba3123 (diff)
git2go: Add serialization tests merge command
The merge command doesn't have any unit tests expliciting its standalone behaviour. Add tests to verify that serialization and deserialization of merge commands and results work.
Diffstat (limited to 'internal/git2go')
-rw-r--r--internal/git2go/merge_test.go157
1 files changed, 157 insertions, 0 deletions
diff --git a/internal/git2go/merge_test.go b/internal/git2go/merge_test.go
new file mode 100644
index 000000000..1de4f3cab
--- /dev/null
+++ b/internal/git2go/merge_test.go
@@ -0,0 +1,157 @@
+package git2go
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestGit2Go_MergeCommandSerialization(t *testing.T) {
+ testcases := []struct {
+ desc string
+ cmd MergeCommand
+ err string
+ }{
+ {
+ desc: "missing repository",
+ cmd: MergeCommand{},
+ err: "missing repository",
+ },
+ {
+ desc: "missing author name",
+ cmd: MergeCommand{
+ Repository: "foo",
+ },
+ err: "missing author name",
+ },
+ {
+ desc: "missing author mail",
+ cmd: MergeCommand{
+ Repository: "foo",
+ AuthorName: "Au Thor",
+ },
+ err: "missing author mail",
+ },
+ {
+ desc: "missing author message",
+ cmd: MergeCommand{
+ Repository: "foo",
+ AuthorName: "Au Thor",
+ AuthorMail: "au@thor.com",
+ },
+ err: "missing message",
+ },
+ {
+ desc: "missing author ours",
+ cmd: MergeCommand{
+ Repository: "foo",
+ AuthorName: "Au Thor",
+ AuthorMail: "au@thor.com",
+ Message: "Message",
+ },
+ err: "missing ours",
+ },
+ {
+ desc: "missing theirs",
+ cmd: MergeCommand{
+ Repository: "foo",
+ AuthorName: "Au Thor",
+ AuthorMail: "au@thor.com",
+ Message: "Message",
+ Ours: "refs/heads/master",
+ },
+ err: "missing theirs",
+ },
+ {
+ desc: "valid command",
+ cmd: MergeCommand{
+ Repository: "foo",
+ AuthorName: "Au Thor",
+ AuthorMail: "au@thor.com",
+ Message: "Message",
+ Ours: "refs/heads/master",
+ Theirs: "refs/heads/foo",
+ },
+ },
+ {
+ desc: "valid command with date",
+ cmd: MergeCommand{
+ Repository: "foo",
+ AuthorName: "Au Thor",
+ AuthorMail: "au@thor.com",
+ AuthorDate: time.Now().UTC(),
+ Message: "Message",
+ Ours: "refs/heads/master",
+ Theirs: "refs/heads/foo",
+ },
+ },
+ }
+
+ for _, tc := range testcases {
+ t.Run(tc.desc, func(t *testing.T) {
+ serialized, err := serialize(tc.cmd)
+ require.NoError(t, err)
+
+ deserialized, err := MergeCommandFromSerialized(serialized)
+
+ if tc.err != "" {
+ require.Error(t, err)
+ require.Contains(t, err.Error(), tc.err)
+ } else {
+ require.NoError(t, err)
+ require.Equal(t, deserialized, tc.cmd)
+ }
+ })
+ }
+}
+
+func TestGit2Go_MergeResultSerialization(t *testing.T) {
+ serializeResult := func(t *testing.T, result MergeResult) string {
+ serialized, err := result.Serialize()
+ require.NoError(t, err)
+ return serialized
+ }
+
+ testcases := []struct {
+ desc string
+ serialized string
+ expected MergeResult
+ err string
+ }{
+ {
+ desc: "empty merge result",
+ serialized: serializeResult(t, MergeResult{}),
+ expected: MergeResult{},
+ },
+ {
+ desc: "merge result with commit",
+ serialized: serializeResult(t, MergeResult{
+ CommitID: "1234",
+ }),
+ expected: MergeResult{
+ CommitID: "1234",
+ },
+ },
+ {
+ desc: "invalid serialized representation",
+ serialized: "xvlc",
+ err: "invalid character",
+ },
+ }
+
+ for _, tc := range testcases {
+ t.Run(tc.desc, func(t *testing.T) {
+ var deserialized MergeResult
+ err := deserialize(tc.serialized, &deserialized)
+
+ if tc.err != "" {
+ require.Error(t, err)
+ require.Contains(t, err.Error(), tc.err)
+ } else {
+ require.NoError(t, err)
+ require.Equal(t, deserialized, tc.expected)
+ }
+ })
+ }
+}