9
"github.com/go-git/go-git/v5"
10
"github.com/go-git/go-git/v5/plumbing/object"
11
"github.com/stretchr/testify/assert"
12
"github.com/wandb/wandb/core/pkg/observability"
13
"github.com/wandb/wandb/core/pkg/server"
16
func setupTestRepo() (string, func(), error) {
17
repoPath, err := os.MkdirTemp("", "testrepo")
21
repo, err := git.PlainInit(repoPath, false)
26
worktree, err := repo.Worktree()
30
tempFile := filepath.Join(repoPath, "temp.txt")
31
err = os.WriteFile(tempFile, []byte("test content"), 0644)
36
_, err = worktree.Add("temp.txt")
41
commit, err := worktree.Commit("Initial commit", &git.CommitOptions{
42
Author: &object.Signature{
44
Email: "test@example.com",
50
fmt.Printf("Commit created: %s\n", commit.String())
53
os.RemoveAll(repoPath)
55
return repoPath, cleanup, nil
58
func TestIsAvailable(t *testing.T) {
59
repoPath, cleanup, err := setupTestRepo()
65
logger := observability.NewNoOpLogger()
66
git := server.NewGit(repoPath, logger)
67
available := git.IsAvailable()
68
assert.True(t, available)
71
func TestLatestCommit(t *testing.T) {
72
repoPath, cleanup, err := setupTestRepo()
78
logger := observability.NewNoOpLogger()
79
git := server.NewGit(repoPath, logger)
80
latest, err := git.LatestCommit("HEAD")
81
assert.NoError(t, err)
82
assert.Len(t, latest, 40)
85
func TestSavePatch(t *testing.T) {
86
repoPath, cleanup, err := setupTestRepo()
93
tempFile := filepath.Join(repoPath, "temp.txt")
94
err = os.WriteFile(tempFile, []byte("test content\n"), 0644)
99
tempDir, err := os.MkdirTemp("", "temp_output")
103
defer os.RemoveAll(tempDir)
104
outputPath := filepath.Join(tempDir, "diff.patch")
106
logger := observability.NewNoOpLogger()
107
git := server.NewGit(repoPath, logger)
108
err = git.SavePatch("HEAD", outputPath)
109
assert.NoError(t, err)
110
assert.FileExists(t, outputPath)
112
patch, err := os.ReadFile(outputPath)
116
assert.Contains(t, string(patch), "+test content")