File: decoder_test.go

package info (click to toggle)
gitlab-shell 14.35.0%2Bds1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,652 kB
  • sloc: ruby: 1,129; makefile: 583; sql: 391; sh: 384
file content (71 lines) | stat: -rw-r--r-- 1,910 bytes parent folder | download | duplicates (2)
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
package git_test

import (
	"bytes"
	"io"
	"testing"

	"github.com/stretchr/testify/require"
	"gitlab.com/gitlab-org/gitaly/v16/internal/git"
	"gitlab.com/gitlab-org/gitaly/v16/internal/git/gittest"
	"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper"
	"gitlab.com/gitlab-org/gitaly/v16/internal/testhelper/testcfg"
)

func TestShowRefDecoder(t *testing.T) {
	t.Parallel()

	cfg := testcfg.Build(t)
	ctx := testhelper.Context(t)

	_, repoPath := gittest.CreateRepository(t, ctx, cfg, gittest.CreateRepositoryConfig{
		SkipCreationViaService: true,
	})

	mainCommit := gittest.WriteCommit(t, cfg, repoPath, gittest.WithMessage("main"), gittest.WithReference("refs/heads/main"))
	nestedCommit := gittest.WriteCommit(t, cfg, repoPath, gittest.WithMessage("nested"), gittest.WithReference("refs/heads/nested/branch"))
	namespacedCommit := gittest.WriteCommit(t, cfg, repoPath, gittest.WithMessage("namespace"), gittest.WithReference("refs/different/namespace"))
	tag := gittest.WriteTag(t, cfg, repoPath, "v1.0.0", namespacedCommit.Revision(), gittest.WriteTagConfig{
		Message: "annotated tag",
	})
	gittest.Exec(t, cfg, "-C", repoPath, "symbolic-ref", "refs/heads/symbolic", "refs/heads/main")

	output := gittest.Exec(t, cfg, "-C", repoPath, "show-ref")

	d := git.NewShowRefDecoder(bytes.NewReader(output))
	var refs []git.Reference
	for {
		var ref git.Reference

		err := d.Decode(&ref)
		if err == io.EOF {
			break
		}
		require.NoError(t, err)

		refs = append(refs, ref)
	}

	require.Equal(t, []git.Reference{
		{
			Name:   "refs/different/namespace",
			Target: namespacedCommit.String(),
		},
		{
			Name:   "refs/heads/main",
			Target: mainCommit.String(),
		},
		{
			Name:   "refs/heads/nested/branch",
			Target: nestedCommit.String(),
		},
		{
			Name:   "refs/heads/symbolic",
			Target: mainCommit.String(),
		},
		{
			Name:   "refs/tags/v1.0.0",
			Target: tag.String(),
		},
	}, refs)
}