From 2f34ba9a792c3e0f4a5249d2e000cacbe73574fe Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Sun, 7 Jun 2026 10:16:02 +0000 Subject: internal/testgit: Prepare for tag --- internal/testgit/revparse.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 internal/testgit/revparse.go (limited to 'internal/testgit/revparse.go') diff --git a/internal/testgit/revparse.go b/internal/testgit/revparse.go new file mode 100644 index 00000000..ffa5b702 --- /dev/null +++ b/internal/testgit/revparse.go @@ -0,0 +1,26 @@ +package testgit + +import ( + "fmt" + "strings" + "testing" + + "lindenii.org/go/furgit/object/id" +) + +// RevParse resolves one revision spec to an object ID. +func (repo *Repo) RevParse(tb testing.TB, spec string) (id.ObjectID, error) { + tb.Helper() + + stdout, err := repo.run(tb, nil, "git", "rev-parse", "--verify", "--end-of-options", spec) + if err != nil { + return id.ObjectID{}, fmt.Errorf("rev-parse %q: %w", spec, err) + } + + objectID, err := repo.objectFormat.FromString(strings.TrimSuffix(string(stdout), "\n")) + if err != nil { + return id.ObjectID{}, fmt.Errorf("parse git rev-parse output %q: %w", string(stdout), err) + } + + return objectID, nil +} -- cgit v1.3.1-10-gc9f91