From 01d15bccf3b1dcc51516b1f64d50950b31d7f8fb Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Fri, 6 Mar 2026 21:19:56 +0800 Subject: 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 --- internal/testgit/repo_fs.go | 86 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 86 insertions(+) create mode 100644 internal/testgit/repo_fs.go (limited to 'internal/testgit/repo_fs.go') 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) + } +} -- cgit v1.3.1-10-gc9f91