tangled
alpha
login
or
join now
runxiyu.tngl.sh
/
furgit
6
fork
atom
Fast implementation of Git in pure Go
6
fork
atom
overview
issues
pulls
pipelines
repository: Delete passthrough convenience functions
runxiyu.tngl.sh
1 week ago
dfb3834a
235a7070
verified
This commit was signed with the committer's
known signature
.
runxiyu.tngl.sh
SSH Key Fingerprint:
SHA256:jdcgZM4f40eqgoEW57poBu5vM9WoGE02ZzhWbfbNzc0=
+3
-170
4 changed files
expand all
collapse all
unified
split
repository
read_stored_passthrough.go
read_stored_passthrough_test.go
traversal_helpers_test.go
write_loose_test.go
-43
repository/read_stored_passthrough.go
···
1
1
-
package repository
2
2
-
3
3
-
import (
4
4
-
"io"
5
5
-
6
6
-
"codeberg.org/lindenii/furgit/objectid"
7
7
-
"codeberg.org/lindenii/furgit/objecttype"
8
8
-
)
9
9
-
10
10
-
// ReadStoredHeader reads an object's type and declared content length.
11
11
-
func (repo *Repository) ReadStoredHeader(id objectid.ObjectID) (objecttype.Type, int64, error) {
12
12
-
return repo.objects.ReadHeader(id)
13
13
-
}
14
14
-
15
15
-
// ReadStoredSize reads an object's declared content length.
16
16
-
func (repo *Repository) ReadStoredSize(id objectid.ObjectID) (int64, error) {
17
17
-
return repo.objects.ReadSize(id)
18
18
-
}
19
19
-
20
20
-
// ReadStoredBytesFull reads a full serialized object as "type size\0content".
21
21
-
func (repo *Repository) ReadStoredBytesFull(id objectid.ObjectID) ([]byte, error) {
22
22
-
return repo.objects.ReadBytesFull(id)
23
23
-
}
24
24
-
25
25
-
// ReadStoredBytesContent reads an object's type and content bytes.
26
26
-
func (repo *Repository) ReadStoredBytesContent(id objectid.ObjectID) (objecttype.Type, []byte, error) {
27
27
-
return repo.objects.ReadBytesContent(id)
28
28
-
}
29
29
-
30
30
-
// ReadStoredReaderFull reads a full serialized object stream.
31
31
-
//
32
32
-
// Caller must close the returned reader.
33
33
-
func (repo *Repository) ReadStoredReaderFull(id objectid.ObjectID) (io.ReadCloser, error) {
34
34
-
return repo.objects.ReadReaderFull(id)
35
35
-
}
36
36
-
37
37
-
// ReadStoredReaderContent reads an object's type, declared content length, and
38
38
-
// content stream.
39
39
-
//
40
40
-
// Caller must close the returned reader.
41
41
-
func (repo *Repository) ReadStoredReaderContent(id objectid.ObjectID) (objecttype.Type, int64, io.ReadCloser, error) {
42
42
-
return repo.objects.ReadReaderContent(id)
43
43
-
}
-124
repository/read_stored_passthrough_test.go
···
1
1
-
package repository_test
2
2
-
3
3
-
import (
4
4
-
"bytes"
5
5
-
"io"
6
6
-
"os"
7
7
-
"testing"
8
8
-
9
9
-
"codeberg.org/lindenii/furgit/internal/testgit"
10
10
-
"codeberg.org/lindenii/furgit/objectid"
11
11
-
"codeberg.org/lindenii/furgit/objecttype"
12
12
-
"codeberg.org/lindenii/furgit/repository"
13
13
-
)
14
14
-
15
15
-
func TestReadStoredPassThroughs(t *testing.T) {
16
16
-
t.Parallel()
17
17
-
18
18
-
testgit.ForEachAlgorithm(t, func(t *testing.T, algo objectid.Algorithm) { //nolint:thelper
19
19
-
repoHarness := testgit.NewRepo(t, testgit.RepoOptions{
20
20
-
ObjectFormat: algo,
21
21
-
Bare: true,
22
22
-
RefFormat: "files",
23
23
-
})
24
24
-
25
25
-
_, _, commitID := repoHarness.MakeCommit(t, "pass-through")
26
26
-
27
27
-
root, err := os.OpenRoot(repoHarness.Dir())
28
28
-
if err != nil {
29
29
-
t.Fatalf("os.OpenRoot: %v", err)
30
30
-
}
31
31
-
32
32
-
defer func() { _ = root.Close() }()
33
33
-
34
34
-
repo, err := repository.Open(root)
35
35
-
if err != nil {
36
36
-
t.Fatalf("repository.Open: %v", err)
37
37
-
}
38
38
-
39
39
-
defer func() { _ = repo.Close() }()
40
40
-
41
41
-
headerTy, headerSize, err := repo.ReadStoredHeader(commitID)
42
42
-
if err != nil {
43
43
-
t.Fatalf("ReadStoredHeader: %v", err)
44
44
-
}
45
45
-
46
46
-
if headerTy != objecttype.TypeCommit {
47
47
-
t.Fatalf("ReadStoredHeader type = %v, want %v", headerTy, objecttype.TypeCommit)
48
48
-
}
49
49
-
50
50
-
if headerSize <= 0 {
51
51
-
t.Fatalf("ReadStoredHeader size = %d, want > 0", headerSize)
52
52
-
}
53
53
-
54
54
-
full, err := repo.ReadStoredBytesFull(commitID)
55
55
-
if err != nil {
56
56
-
t.Fatalf("ReadStoredBytesFull: %v", err)
57
57
-
}
58
58
-
59
59
-
if len(full) == 0 {
60
60
-
t.Fatalf("ReadStoredBytesFull returned empty payload")
61
61
-
}
62
62
-
63
63
-
contentTy, content, err := repo.ReadStoredBytesContent(commitID)
64
64
-
if err != nil {
65
65
-
t.Fatalf("ReadStoredBytesContent: %v", err)
66
66
-
}
67
67
-
68
68
-
if contentTy != objecttype.TypeCommit {
69
69
-
t.Fatalf("ReadStoredBytesContent type = %v, want %v", contentTy, objecttype.TypeCommit)
70
70
-
}
71
71
-
72
72
-
if len(content) == 0 {
73
73
-
t.Fatalf("ReadStoredBytesContent returned empty content")
74
74
-
}
75
75
-
76
76
-
fullReader, err := repo.ReadStoredReaderFull(commitID)
77
77
-
if err != nil {
78
78
-
t.Fatalf("ReadStoredReaderFull: %v", err)
79
79
-
}
80
80
-
81
81
-
fullReaderBytes, readErr := io.ReadAll(fullReader)
82
82
-
closeErr := fullReader.Close()
83
83
-
84
84
-
if readErr != nil {
85
85
-
t.Fatalf("ReadStoredReaderFull read: %v", readErr)
86
86
-
}
87
87
-
88
88
-
if closeErr != nil {
89
89
-
t.Fatalf("ReadStoredReaderFull close: %v", closeErr)
90
90
-
}
91
91
-
92
92
-
if !bytes.Equal(fullReaderBytes, full) {
93
93
-
t.Fatalf("ReadStoredReaderFull bytes mismatch against ReadStoredBytesFull")
94
94
-
}
95
95
-
96
96
-
readerTy, readerSize, contentReader, err := repo.ReadStoredReaderContent(commitID)
97
97
-
if err != nil {
98
98
-
t.Fatalf("ReadStoredReaderContent: %v", err)
99
99
-
}
100
100
-
101
101
-
if readerTy != objecttype.TypeCommit {
102
102
-
t.Fatalf("ReadStoredReaderContent type = %v, want %v", readerTy, objecttype.TypeCommit)
103
103
-
}
104
104
-
105
105
-
if readerSize != int64(len(content)) {
106
106
-
t.Fatalf("ReadStoredReaderContent size = %d, want %d", readerSize, len(content))
107
107
-
}
108
108
-
109
109
-
readerContentBytes, readErr := io.ReadAll(contentReader)
110
110
-
closeErr = contentReader.Close()
111
111
-
112
112
-
if readErr != nil {
113
113
-
t.Fatalf("ReadStoredReaderContent read: %v", readErr)
114
114
-
}
115
115
-
116
116
-
if closeErr != nil {
117
117
-
t.Fatalf("ReadStoredReaderContent close: %v", closeErr)
118
118
-
}
119
119
-
120
120
-
if !bytes.Equal(readerContentBytes, content) {
121
121
-
t.Fatalf("ReadStoredReaderContent bytes mismatch against ReadStoredBytesContent")
122
122
-
}
123
123
-
})
124
124
-
}
+1
-1
repository/traversal_helpers_test.go
···
21
21
id := frame.id
22
22
23
23
if !frame.isTree {
24
24
-
_, err := repo.ReadStoredSize(id)
24
24
+
_, err := repo.Objects().ReadSize(id)
25
25
if err != nil {
26
26
return 0, err
27
27
}
+2
-2
repository/write_loose_test.go
···
47
47
t.Fatalf("WriteLooseBytesContent id = %s, want %s", gotID, wantID)
48
48
}
49
49
50
50
-
ty, gotContent, err := repo.ReadStoredBytesContent(gotID)
50
50
+
ty, gotContent, err := repo.Objects().ReadBytesContent(gotID)
51
51
if err != nil {
52
52
t.Fatalf("ReadStoredBytesContent: %v", err)
53
53
}
···
125
125
126
126
defer func() { _ = repo.Close() }()
127
127
128
128
-
raw, err := repo.ReadStoredBytesFull(commitID)
128
128
+
raw, err := repo.Objects().ReadBytesFull(commitID)
129
129
if err != nil {
130
130
t.Fatalf("ReadStoredBytesFull: %v", err)
131
131
}