You've already forked agentic-coding-workflow
57 lines
1.9 KiB
Go
57 lines
1.9 KiB
Go
package git
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"sort"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestListTrackedFiles(t *testing.T) {
|
|
gitAvailable(t)
|
|
dir := t.TempDir()
|
|
mustGit(t, dir, "init", "-b", "main")
|
|
mustGit(t, dir, "config", "user.email", "test@example.com")
|
|
mustGit(t, dir, "config", "user.name", "Test")
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "a.go"), []byte("package a\n"), 0o644))
|
|
require.NoError(t, os.MkdirAll(filepath.Join(dir, "sub"), 0o755))
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "sub", "b.txt"), []byte("b\n"), 0o644))
|
|
// Untracked + ignored files must NOT appear.
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, ".gitignore"), []byte("ignored.txt\n"), 0o644))
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "ignored.txt"), []byte("x\n"), 0o644))
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "untracked.txt"), []byte("y\n"), 0o644))
|
|
mustGit(t, dir, "add", "a.go", "sub/b.txt", ".gitignore")
|
|
mustGit(t, dir, "commit", "-m", "init")
|
|
|
|
r := newTestRunner(t)
|
|
files, err := r.ListTrackedFiles(context.Background(), dir)
|
|
require.NoError(t, err)
|
|
sort.Strings(files)
|
|
require.Equal(t, []string{".gitignore", "a.go", "sub/b.txt"}, files)
|
|
}
|
|
|
|
func TestDiffStat(t *testing.T) {
|
|
gitAvailable(t)
|
|
dir := t.TempDir()
|
|
mustGit(t, dir, "init", "-b", "main")
|
|
mustGit(t, dir, "config", "user.email", "test@example.com")
|
|
mustGit(t, dir, "config", "user.name", "Test")
|
|
require.NoError(t, os.WriteFile(filepath.Join(dir, "f.go"), []byte("package f\n\nfunc F() {}\n"), 0o644))
|
|
mustGit(t, dir, "add", "f.go")
|
|
mustGit(t, dir, "commit", "-m", "add F")
|
|
|
|
r := newTestRunner(t)
|
|
// HEAD resolves the just-made commit.
|
|
commits, err := r.Log(context.Background(), dir, 1)
|
|
require.NoError(t, err)
|
|
require.Len(t, commits, 1)
|
|
|
|
stat, err := r.DiffStat(context.Background(), dir, commits[0].Hash)
|
|
require.NoError(t, err)
|
|
require.Contains(t, stat, "f.go")
|
|
require.Contains(t, stat, "add F") // subject from --format
|
|
}
|