File: ls_tree_scanner_test.go

package info (click to toggle)
git-lfs 3.6.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 4,808 kB
  • sloc: sh: 21,256; makefile: 507; ruby: 417
file content (51 lines) | stat: -rw-r--r-- 1,502 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
package git

import (
	"strings"
	"testing"

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

type genericScanner interface {
	Err() error
	Scan() bool
}

func assertNextScan(t *testing.T, scanner genericScanner) {
	assert.True(t, scanner.Scan())
	assert.Nil(t, scanner.Err())
}

func assertScannerDone(t *testing.T, scanner genericScanner) {
	assert.False(t, scanner.Scan())
	assert.Nil(t, scanner.Err())
}

func TestLsTreeParser(t *testing.T) {
	stdout := "100644 blob d899f6551a51cf19763c5955c7a06a2726f018e9      42	.gitattributes\000100644 blob 4d343e022e11a8618db494dc3c501e80c7e18197     126	PB SCN 16 Odhrán.wav"
	scanner := NewLsTreeScanner(strings.NewReader(stdout))

	assertNextTreeBlob(t, scanner, "d899f6551a51cf19763c5955c7a06a2726f018e9", ".gitattributes")
	assertNextTreeBlob(t, scanner, "4d343e022e11a8618db494dc3c501e80c7e18197", "PB SCN 16 Odhrán.wav")
	assertScannerDone(t, scanner)
}

func assertNextTreeBlob(t *testing.T, scanner *LsTreeScanner, oid, filename string) {
	assertNextScan(t, scanner)
	b := scanner.TreeBlob()
	assert.NotNil(t, b)
	assert.Equal(t, oid, b.Oid)
	assert.Equal(t, filename, b.Filename)
}

func BenchmarkLsTreeParser(b *testing.B) {
	stdout := "100644 blob d899f6551a51cf19763c5955c7a06a2726f018e9      42	.gitattributes\000100644 blob 4d343e022e11a8618db494dc3c501e80c7e18197     126	PB SCN 16 Odhrán.wav"

	// run the Fib function b.N times
	for n := 0; n < b.N; n++ {
		scanner := NewLsTreeScanner(strings.NewReader(stdout))
		for scanner.Scan() {
		}
	}
}