diff options
| author | 2025-11-16 00:00:00 +0000 | |
|---|---|---|
| committer | 2025-11-16 00:00:00 +0000 | |
| commit | bad0f9715556a470d0de2a22c7040181e3a033ba (patch) | |
| tree | 21463072ce5bc85682a887ce0cae26d833941af3 /testutil_test.go | |
| parent | EntryRecursive should return ErrNotFound instead of nil, nil (diff) | |
| signature | ||
Use actual git for tests and enhance Head
Diffstat (limited to 'testutil_test.go')
| -rw-r--r-- | testutil_test.go | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/testutil_test.go b/testutil_test.go new file mode 100644 index 00000000..bca6db14 --- /dev/null +++ b/testutil_test.go @@ -0,0 +1,67 @@ +package furgit + +import ( + "bytes" + "os" + "os/exec" + "strings" + "testing" +) + +func setupWorkDir(t *testing.T) (string, func()) { + t.Helper() + workDir, err := os.MkdirTemp("", "furgit-work-*") + if err != nil { + t.Fatalf("failed to create work dir: %v", err) + } + return workDir, func() { _ = os.RemoveAll(workDir) } +} + +func gitCmd(t *testing.T, dir string, args ...string) string { + t.Helper() + cmd := exec.Command("git", args...) + cmd.Dir = dir + cmd.Env = append(os.Environ(), + "GIT_CONFIG_GLOBAL=/dev/null", + "GIT_CONFIG_SYSTEM=/dev/null", + "GIT_AUTHOR_NAME=Test Author", + "GIT_AUTHOR_EMAIL=test@example.org", + "GIT_COMMITTER_NAME=Test Committer", + "GIT_COMMITTER_EMAIL=committer@example.org", + "GIT_AUTHOR_DATE=1234567890 +0000", + "GIT_COMMITTER_DATE=1234567890 +0000", + ) + output, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("git %v failed: %v\n%s", args, err, output) + } + return strings.TrimSpace(string(output)) +} + +func gitHashObject(t *testing.T, dir, objType string, data []byte) string { + t.Helper() + cmd := exec.Command("git", "hash-object", "-t", objType, "-w", "--stdin") + cmd.Dir = dir + cmd.Stdin = bytes.NewReader(data) + cmd.Env = append(os.Environ(), "GIT_CONFIG_GLOBAL=/dev/null", "GIT_CONFIG_SYSTEM=/dev/null") + output, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("git hash-object failed: %v\n%s", err, output) + } + return strings.TrimSpace(string(output)) +} + +func gitCatFile(t *testing.T, dir, objType, hash string) []byte { + t.Helper() + cmd := exec.Command("git", "cat-file", objType, hash) + cmd.Dir = dir + cmd.Env = append(os.Environ(), "GIT_CONFIG_GLOBAL=/dev/null", "GIT_CONFIG_SYSTEM=/dev/null") + output, err := cmd.CombinedOutput() + if err != nil { + t.Fatalf("git cat-file %s %s failed: %v\n%s", objType, hash, err, output) + } + if objType == "-t" || objType == "-s" { + return bytes.TrimSpace(output) + } + return output +} |
