diff options
| author | 2026-03-06 21:19:56 +0800 | |
|---|---|---|
| committer | 2026-03-07 00:34:30 +0800 | |
| commit | 01d15bccf3b1dcc51516b1f64d50950b31d7f8fb (patch) | |
| tree | e491fcc762c67c1ef4ce54faafc5dafdb734ae8a /internal/testgit/repo_fs.go | |
| parent | objectstored/refstore: Weird ireturn behavior (diff) | |
| signature | No signature | |
Urgh I made some wrong amends and I'm too tired to separate the commits out this time
ancestor: Split out of reachability
mergebase: Add merge base routines
internal/commitquery: Add commit query context engine thingy
internal/peel: Shared tag peeling
errors: Shared object query errors
internal/testgit: Add rooted repo helpers; remove raw path access
objectstore/memory: Add in-memory object store
objectid: Add Compare helper
Diffstat (limited to 'internal/testgit/repo_fs.go')
| -rw-r--r-- | internal/testgit/repo_fs.go | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/internal/testgit/repo_fs.go b/internal/testgit/repo_fs.go new file mode 100644 index 00000000..56acbfcf --- /dev/null +++ b/internal/testgit/repo_fs.go @@ -0,0 +1,86 @@ +package testgit + +import ( + "os" + "path/filepath" + "testing" +) + +// OpenFile opens one file relative to the repository root. +func (testRepo *TestRepo) OpenFile(tb testing.TB, name string) *os.File { + tb.Helper() + + root := testRepo.OpenRoot(tb) + + file, err := root.Open(name) + if err != nil { + tb.Fatalf("Open(%q): %v", name, err) + } + + return file +} + +// ReadFile reads one file relative to the repository root. +func (testRepo *TestRepo) ReadFile(tb testing.TB, name string) []byte { + tb.Helper() + + root := testRepo.OpenRoot(tb) + + data, err := root.ReadFile(name) + if err != nil { + tb.Fatalf("ReadFile(%q): %v", name, err) + } + + return data +} + +// WriteFile writes one file relative to the repository root. +func (testRepo *TestRepo) WriteFile(tb testing.TB, name string, data []byte, perm os.FileMode) { + tb.Helper() + + root := testRepo.OpenRoot(tb) + + err := root.WriteFile(name, data, perm) + if err != nil { + tb.Fatalf("WriteFile(%q): %v", name, err) + } +} + +// WriteFileAll writes one file relative to the repository root, creating any +// missing parent directories first. +func (testRepo *TestRepo) WriteFileAll( + tb testing.TB, + name string, + data []byte, + dirPerm os.FileMode, + filePerm os.FileMode, +) { + tb.Helper() + + root := testRepo.OpenRoot(tb) + + dir := filepath.Dir(name) + if dir != "." { + err := root.MkdirAll(dir, dirPerm) + if err != nil { + tb.Fatalf("MkdirAll(%q): %v", dir, err) + } + } + + err := root.WriteFile(name, data, filePerm) + if err != nil { + tb.Fatalf("WriteFile(%q): %v", name, err) + } +} + +// Remove removes one path relative to the repository root. +func (testRepo *TestRepo) Remove(tb testing.TB, name string) { + tb.Helper() + + root := testRepo.OpenRoot(tb) + + err := root.Remove(name) + if err != nil { + tb.Fatalf("Remove(%q): %v", name, err) + } +} |
