aboutsummaryrefslogtreecommitdiff
path: root/commitquery/ancestor_unit_test.go
diff options
context:
space:
mode:
authorGravatar Runxi Yu2026-03-29 14:42:13 +0000
committerGravatar Runxi Yu2026-03-29 14:47:04 +0000
commitdf73a4c6f1b58075316ba7449fbfb127b9fbb79d (patch)
tree62fee259ec037410b06419ee3ac9c2c189c35ab3 /commitquery/ancestor_unit_test.go
parentinternal/priorityqueue: Update docs (diff)
signatureNo signature
commitquery: Reorganize
Diffstat (limited to 'commitquery/ancestor_unit_test.go')
-rw-r--r--commitquery/ancestor_unit_test.go117
1 files changed, 0 insertions, 117 deletions
diff --git a/commitquery/ancestor_unit_test.go b/commitquery/ancestor_unit_test.go
deleted file mode 100644
index 8cb147a6..00000000
--- a/commitquery/ancestor_unit_test.go
+++ /dev/null
@@ -1,117 +0,0 @@
-package commitquery_test
-
-import (
- "errors"
- "fmt"
- "testing"
-
- giterrors "codeberg.org/lindenii/furgit/errors"
- "codeberg.org/lindenii/furgit/internal/testgit"
- objectid "codeberg.org/lindenii/furgit/object/id"
- "codeberg.org/lindenii/furgit/object/store/memory"
- objecttree "codeberg.org/lindenii/furgit/object/tree"
- objecttype "codeberg.org/lindenii/furgit/object/type"
-
- "codeberg.org/lindenii/furgit/commitquery"
-)
-
-// ancestorCommitBody serializes one minimal commit body.
-func ancestorCommitBody(tree objectid.ObjectID, parents ...objectid.ObjectID) []byte {
- buf := fmt.Appendf(nil, "tree %s\n", tree.String())
- for _, parent := range parents {
- buf = append(buf, fmt.Appendf(nil, "parent %s\n", parent.String())...)
- }
-
- buf = append(buf, []byte("\nmsg\n")...)
-
- return buf
-}
-
-// ancestorTagBody serializes one minimal annotated tag body.
-func ancestorTagBody(target objectid.ObjectID, targetType objecttype.Type) []byte {
- targetName, ok := targetType.Name()
- if !ok {
- panic("invalid tag target type")
- }
-
- return fmt.Appendf(nil, "object %s\ntype %s\ntag t\n\nmsg\n", target.String(), targetName)
-}
-
-// mustSerializeAncestorTree serializes one tree or fails the test.
-func mustSerializeAncestorTree(tb testing.TB, tree *objecttree.Tree) []byte {
- tb.Helper()
-
- body, err := tree.SerializeWithoutHeader()
- if err != nil {
- tb.Fatalf("SerializeWithoutHeader: %v", err)
- }
-
- return body
-}
-
-func TestIs(t *testing.T) {
- t.Parallel()
-
- testgit.ForEachAlgorithm(t, func(t *testing.T, algo objectid.Algorithm) { //nolint:thelper
- store := memory.New(algo)
- blob := store.AddObject(objecttype.TypeBlob, []byte("blob\n"))
- tree := store.AddObject(objecttype.TypeTree, mustSerializeAncestorTree(t, &objecttree.Tree{Entries: []objecttree.TreeEntry{{
- Mode: objecttree.FileModeRegular,
- Name: []byte("f"),
- ID: blob,
- }}}))
- c1 := store.AddObject(objecttype.TypeCommit, ancestorCommitBody(tree))
- c2 := store.AddObject(objecttype.TypeCommit, ancestorCommitBody(tree, c1))
- otherBlob := store.AddObject(objecttype.TypeBlob, []byte("other-blob\n"))
- otherTree := store.AddObject(objecttype.TypeTree, mustSerializeAncestorTree(t, &objecttree.Tree{Entries: []objecttree.TreeEntry{{
- Mode: objecttree.FileModeRegular,
- Name: []byte("g"),
- ID: otherBlob,
- }}}))
- c3 := store.AddObject(objecttype.TypeCommit, ancestorCommitBody(otherTree))
- tag := store.AddObject(objecttype.TypeTag, ancestorTagBody(c2, objecttype.TypeCommit))
-
- ok, err := commitquery.New(store, nil).IsAncestor(c1, tag)
- if err != nil {
- t.Fatalf("Is(c1, tag): %v", err)
- }
-
- if !ok {
- t.Fatal("expected c1 to be ancestor of tag->c2")
- }
-
- ok, err = commitquery.New(store, nil).IsAncestor(c3, c2)
- if err != nil {
- t.Fatalf("Is(c3, c2): %v", err)
- }
-
- if ok {
- t.Fatal("did not expect c3 to be ancestor of c2")
- }
- })
-}
-
-func TestIsRejectsNonCommitAfterPeel(t *testing.T) {
- t.Parallel()
-
- testgit.ForEachAlgorithm(t, func(t *testing.T, algo objectid.Algorithm) { //nolint:thelper
- store := memory.New(algo)
- blob := store.AddObject(objecttype.TypeBlob, []byte("blob\n"))
- tree := store.AddObject(objecttype.TypeTree, mustSerializeAncestorTree(t, &objecttree.Tree{Entries: []objecttree.TreeEntry{{
- Mode: objecttree.FileModeRegular,
- Name: []byte("f"),
- ID: blob,
- }}}))
- commit := store.AddObject(objecttype.TypeCommit, ancestorCommitBody(tree))
- tagToTree := store.AddObject(objecttype.TypeTag, ancestorTagBody(tree, objecttype.TypeTree))
-
- _, err := commitquery.New(store, nil).IsAncestor(commit, tagToTree)
- if err == nil {
- t.Fatal("expected error")
- }
-
- if _, ok := errors.AsType[*giterrors.ObjectTypeError](err); !ok {
- t.Fatalf("expected ObjectTypeError, got %T (%v)", err, err)
- }
- })
-}