Skip to content

Commit 620b9cc

Browse files
authored
Move initRepo to test (#2839)
1 parent 7fba141 commit 620b9cc

File tree

2 files changed

+106
-101
lines changed

2 files changed

+106
-101
lines changed

porch/repository/pkg/git/git_test.go

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,22 @@ package git
1717
import (
1818
"context"
1919
"flag"
20+
"fmt"
2021
"io/ioutil"
2122
"net"
2223
"os"
2324
"path/filepath"
2425
"reflect"
2526
"testing"
27+
"time"
2628

2729
"github.com/GoogleContainerTools/kpt/porch/api/porch/v1alpha1"
2830
configapi "github.com/GoogleContainerTools/kpt/porch/controllers/pkg/apis/porch/v1alpha1"
2931
"github.com/GoogleContainerTools/kpt/porch/repository/pkg/repository"
3032
gogit "github.com/go-git/go-git/v5"
33+
"github.com/go-git/go-git/v5/plumbing"
34+
"github.com/go-git/go-git/v5/plumbing/filemode"
35+
"github.com/go-git/go-git/v5/plumbing/object"
3136
"k8s.io/klog/v2"
3237
)
3338

@@ -178,3 +183,104 @@ func TestGitPackageRoundTrip(t *testing.T) {
178183
}
179184
}
180185
}
186+
187+
// initRepo is a helper that creates a first commit, ensuring the repo is not empty.
188+
func initRepo(repo *gogit.Repository) error {
189+
store := repo.Storer
190+
191+
var objectHash plumbing.Hash
192+
{
193+
data := []byte("This is a test repo")
194+
eo := store.NewEncodedObject()
195+
eo.SetType(plumbing.BlobObject)
196+
eo.SetSize(int64(len(data)))
197+
198+
w, err := eo.Writer()
199+
if err != nil {
200+
return fmt.Errorf("error creating object writer: %w", err)
201+
}
202+
203+
if _, err = w.Write(data); err != nil {
204+
w.Close()
205+
return fmt.Errorf("error writing object data: %w", err)
206+
}
207+
if err := w.Close(); err != nil {
208+
return fmt.Errorf("error closing object data: %w", err)
209+
}
210+
211+
if h, err := store.SetEncodedObject(eo); err != nil {
212+
return fmt.Errorf("error storing object: %w", err)
213+
} else {
214+
objectHash = h
215+
}
216+
}
217+
218+
var treeHash plumbing.Hash
219+
{
220+
tree := object.Tree{}
221+
222+
te := object.TreeEntry{
223+
Name: "README.md",
224+
Mode: filemode.Regular,
225+
Hash: objectHash,
226+
}
227+
tree.Entries = append(tree.Entries, te)
228+
229+
eo := store.NewEncodedObject()
230+
if err := tree.Encode(eo); err != nil {
231+
return fmt.Errorf("error encoding tree: %w", err)
232+
}
233+
if h, err := store.SetEncodedObject(eo); err != nil {
234+
return fmt.Errorf("error storing tree: %w", err)
235+
} else {
236+
treeHash = h
237+
}
238+
}
239+
240+
var commitHash plumbing.Hash
241+
{
242+
now := time.Now()
243+
commit := &object.Commit{
244+
Author: object.Signature{
245+
Name: "Porch Author",
246+
247+
When: now,
248+
},
249+
Committer: object.Signature{
250+
Name: "Porch Committer",
251+
252+
When: now,
253+
},
254+
Message: "First commit",
255+
TreeHash: treeHash,
256+
}
257+
258+
eo := store.NewEncodedObject()
259+
if err := commit.Encode(eo); err != nil {
260+
return fmt.Errorf("error encoding commit: %w", err)
261+
}
262+
if h, err := store.SetEncodedObject(eo); err != nil {
263+
return fmt.Errorf("error storing commit: %w", err)
264+
} else {
265+
commitHash = h
266+
}
267+
}
268+
269+
{
270+
ref := plumbing.NewHashReference(Main, commitHash)
271+
if err := repo.Storer.SetReference(ref); err != nil {
272+
return fmt.Errorf("error setting reference %q: %w", Main, err)
273+
}
274+
275+
// gogit uses suboptimal default reference name; delete it
276+
repo.Storer.RemoveReference(plumbing.Master)
277+
278+
// create correct HEAD as a symbolic reference of main branch
279+
head := plumbing.NewSymbolicReference(plumbing.HEAD, Main)
280+
if err := repo.Storer.SetReference(head); err != nil {
281+
return fmt.Errorf("error creating HEAD ref: %w", err)
282+
}
283+
}
284+
285+
return nil
286+
}

porch/repository/pkg/git/testing.go

Lines changed: 0 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -492,107 +492,6 @@ func (p *objectWalker) walkObjectTree(hash plumbing.Hash) error {
492492
return nil
493493
}
494494

495-
// initRepo is a helper that creates a first commit, ensuring the repo is not empty.
496-
func initRepo(repo *gogit.Repository) error {
497-
store := repo.Storer
498-
499-
var objectHash plumbing.Hash
500-
{
501-
data := []byte("This is a test repo")
502-
eo := store.NewEncodedObject()
503-
eo.SetType(plumbing.BlobObject)
504-
eo.SetSize(int64(len(data)))
505-
506-
w, err := eo.Writer()
507-
if err != nil {
508-
return fmt.Errorf("error creating object writer: %w", err)
509-
}
510-
511-
if _, err = w.Write(data); err != nil {
512-
w.Close()
513-
return fmt.Errorf("error writing object data: %w", err)
514-
}
515-
if err := w.Close(); err != nil {
516-
return fmt.Errorf("error closing object data: %w", err)
517-
}
518-
519-
if h, err := store.SetEncodedObject(eo); err != nil {
520-
return fmt.Errorf("error storing object: %w", err)
521-
} else {
522-
objectHash = h
523-
}
524-
}
525-
526-
var treeHash plumbing.Hash
527-
{
528-
tree := object.Tree{}
529-
530-
te := object.TreeEntry{
531-
Name: "README.md",
532-
Mode: filemode.Regular,
533-
Hash: objectHash,
534-
}
535-
tree.Entries = append(tree.Entries, te)
536-
537-
eo := store.NewEncodedObject()
538-
if err := tree.Encode(eo); err != nil {
539-
return fmt.Errorf("error encoding tree: %w", err)
540-
}
541-
if h, err := store.SetEncodedObject(eo); err != nil {
542-
return fmt.Errorf("error storing tree: %w", err)
543-
} else {
544-
treeHash = h
545-
}
546-
}
547-
548-
var commitHash plumbing.Hash
549-
{
550-
now := time.Now()
551-
commit := &object.Commit{
552-
Author: object.Signature{
553-
Name: "Porch Author",
554-
555-
When: now,
556-
},
557-
Committer: object.Signature{
558-
Name: "Porch Committer",
559-
560-
When: now,
561-
},
562-
Message: "First commit",
563-
TreeHash: treeHash,
564-
}
565-
566-
eo := store.NewEncodedObject()
567-
if err := commit.Encode(eo); err != nil {
568-
return fmt.Errorf("error encoding commit: %w", err)
569-
}
570-
if h, err := store.SetEncodedObject(eo); err != nil {
571-
return fmt.Errorf("error storing commit: %w", err)
572-
} else {
573-
commitHash = h
574-
}
575-
}
576-
577-
{
578-
ref := plumbing.NewHashReference(Main, commitHash)
579-
if err := repo.Storer.SetReference(ref); err != nil {
580-
return fmt.Errorf("error setting reference %q: %w", Main, err)
581-
}
582-
583-
// gogit uses suboptimal default reference name; delete it
584-
repo.Storer.RemoveReference(plumbing.Master)
585-
586-
// create correct HEAD as a symbolic reference of main branch
587-
head := plumbing.NewSymbolicReference(plumbing.HEAD, Main)
588-
if err := repo.Storer.SetReference(head); err != nil {
589-
return fmt.Errorf("error creating HEAD ref: %w", err)
590-
}
591-
}
592-
593-
return nil
594-
}
595-
596495
// parseHash is a helper that parses a GitHash provided by the client.
597496
func parseHash(s string) (GitHash, error) {
598497
var h GitHash

0 commit comments

Comments
 (0)