pkg/testutil/bldr/git_repository_builder.go (38 lines of code) (raw):

package bldr import ( "testing" "github.com/go-git/go-billy/v5/memfs" "github.com/go-git/go-git/v5" "github.com/go-git/go-git/v5/plumbing" "github.com/go-git/go-git/v5/storage/memory" "github.com/stretchr/testify/require" ) type GitRepositoryBuilder struct { initWithFilesFromPath string } func GitRepository() *GitRepositoryBuilder { return &GitRepositoryBuilder{ initWithFilesFromPath: "", } } func (bldr *GitRepositoryBuilder) InitWithFilesFromDir(path string) *GitRepositoryBuilder { bldr.initWithFilesFromPath = path return bldr } func (bldr *GitRepositoryBuilder) Build(t *testing.T) (*git.Repository, *git.Worktree) { repo, err := git.InitWithOptions(memory.NewStorage(), memfs.New(), git.InitOptions{DefaultBranch: plumbing.Main}) require.NoError(t, err) worktree, err := repo.Worktree() require.NoError(t, err) GitWorktree(t, worktree). CreateFile("README.md", "Git repository"). Stage("README.md"). Commit("Initial commit") if bldr.initWithFilesFromPath != "" { GitWorktree(t, worktree). CopyFromDir(bldr.initWithFilesFromPath). Stage("."). Commit("Seed initial files") } return repo, worktree }