You've already forked agentic-coding-workflow
44 lines
1.1 KiB
Go
44 lines
1.1 KiB
Go
package git
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestStatus_CleanAndDirty(t *testing.T) {
|
|
t.Parallel()
|
|
gitAvailable(t)
|
|
bare := makeBareRepo(t)
|
|
r := newTestRunner(t)
|
|
dst := filepath.Join(t.TempDir(), "wc")
|
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
|
defer cancel()
|
|
require.NoError(t, r.Clone(ctx, dst, bare, "main", nil))
|
|
|
|
st, err := r.Status(ctx, dst)
|
|
require.NoError(t, err)
|
|
require.Empty(t, st, "fresh clone should be clean")
|
|
|
|
require.NoError(t, os.WriteFile(filepath.Join(dst, "x.txt"), []byte("x"), 0o644))
|
|
st, err = r.Status(ctx, dst)
|
|
require.NoError(t, err)
|
|
require.Len(t, st, 1)
|
|
require.Equal(t, "x.txt", st[0].Path)
|
|
require.Equal(t, byte('?'), st[0].WorktreeY)
|
|
}
|
|
|
|
func TestParsePorcelainV1_Renamed(t *testing.T) {
|
|
t.Parallel()
|
|
// "R to_path\0from_path\0" → 1 record,path="to_path"
|
|
buf := []byte("R to_path\x00from_path\x00")
|
|
got := parsePorcelainV1(buf)
|
|
require.Len(t, got, 1)
|
|
require.Equal(t, "to_path", got[0].Path)
|
|
require.Equal(t, byte('R'), got[0].IndexX)
|
|
}
|