summaryrefslogtreecommitdiffstats
path: root/modules/git/blame_test.go
blob: 4bee8cd27a9626d81aae0f65ced1972fcc2cfa5b (plain)
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
// Copyright 2019 The Gitea Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.

package git

import (
	"context"
	"os"
	"testing"

	"github.com/stretchr/testify/assert"
)

const exampleBlame = `
4b92a6c2df28054ad766bc262f308db9f6066596 1 1 1
author Unknown
author-mail <joe2010xtmf@163.com>
author-time 1392833071
author-tz -0500
committer Unknown
committer-mail <joe2010xtmf@163.com>
committer-time 1392833071
committer-tz -0500
summary Add code of delete user
previous be0ba9ea88aff8a658d0495d36accf944b74888d gogs.go
filename gogs.go
	// Copyright 2014 The Gogs Authors. All rights reserved.
ce21ed6c3490cdfad797319cbb1145e2330a8fef 2 2 1
author Joubert RedRat
author-mail <eu+github@redrat.com.br>
author-time 1482322397
author-tz -0200
committer Lunny Xiao
committer-mail <xiaolunwen@gmail.com>
committer-time 1482322397
committer-tz +0800
summary Remove remaining Gogs reference on locales and cmd (#430)
previous 618407c018cdf668ceedde7454c42fb22ba422d8 main.go
filename main.go
	// Copyright 2016 The Gitea Authors. All rights reserved.
4b92a6c2df28054ad766bc262f308db9f6066596 2 3 2
author Unknown
author-mail <joe2010xtmf@163.com>
author-time 1392833071
author-tz -0500
committer Unknown
committer-mail <joe2010xtmf@163.com>
committer-time 1392833071
committer-tz -0500
summary Add code of delete user
previous be0ba9ea88aff8a658d0495d36accf944b74888d gogs.go
filename gogs.go
	// Use of this source code is governed by a MIT-style
4b92a6c2df28054ad766bc262f308db9f6066596 3 4
author Unknown
author-mail <joe2010xtmf@163.com>
author-time 1392833071
author-tz -0500
committer Unknown
committer-mail <joe2010xtmf@163.com>
committer-time 1392833071
committer-tz -0500
summary Add code of delete user
previous be0ba9ea88aff8a658d0495d36accf944b74888d gogs.go
filename gogs.go
	// license that can be found in the LICENSE file.
	
e2aa991e10ffd924a828ec149951f2f20eecead2 6 6 2
author Lunny Xiao
author-mail <xiaolunwen@gmail.com>
author-time 1478872595
author-tz +0800
committer Sandro Santilli
committer-mail <strk@kbt.io>
committer-time 1478872595
committer-tz +0100
summary ask for go get from code.gitea.io/gitea and change gogs to gitea on main file (#146)
previous 5fc370e332171b8658caed771b48585576f11737 main.go
filename main.go
	// Gitea (git with a cup of tea) is a painless self-hosted Git Service.
e2aa991e10ffd924a828ec149951f2f20eecead2 7 7
	package main // import "code.gitea.io/gitea"
`

func TestReadingBlameOutput(t *testing.T) {
	tempFile, err := os.CreateTemp("", ".txt")
	if err != nil {
		panic(err)
	}

	defer tempFile.Close()

	if _, err = tempFile.WriteString(exampleBlame); err != nil {
		panic(err)
	}
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()

	blameReader, err := createBlameReader(ctx, "", "cat", tempFile.Name())
	if err != nil {
		panic(err)
	}
	defer blameReader.Close()

	parts := []*BlamePart{
		{
			"4b92a6c2df28054ad766bc262f308db9f6066596",
			[]string{
				"// Copyright 2014 The Gogs Authors. All rights reserved.",
			},
		},
		{
			"ce21ed6c3490cdfad797319cbb1145e2330a8fef",
			[]string{
				"// Copyright 2016 The Gitea Authors. All rights reserved.",
			},
		},
		{
			"4b92a6c2df28054ad766bc262f308db9f6066596",
			[]string{
				"// Use of this source code is governed by a MIT-style",
				"// license that can be found in the LICENSE file.",
				"",
			},
		},
		{
			"e2aa991e10ffd924a828ec149951f2f20eecead2",
			[]string{
				"// Gitea (git with a cup of tea) is a painless self-hosted Git Service.",
				"package main // import \"code.gitea.io/gitea\"",
			},
		},
		nil,
	}

	for _, part := range parts {
		actualPart, err := blameReader.NextPart()
		if err != nil {
			panic(err)
		}
		assert.Equal(t, part, actualPart)
	}
}