forked from
tangled.org/core
Monorepo for Tangled
1package types
2
3import (
4 "strings"
5 "testing"
6 "time"
7
8 "github.com/go-git/go-git/v5/plumbing"
9 "github.com/go-git/go-git/v5/plumbing/object"
10)
11
12func TestPayloadRootCommit(t *testing.T) {
13 when := time.Date(2025, 1, 1, 12, 0, 0, 0, time.UTC)
14 sig := object.Signature{Name: "Alice", Email: "alice@example.com", When: when}
15
16 c := Commit{
17 Author: sig,
18 Committer: sig,
19 Message: "initial commit\n",
20 Tree: "abc123",
21 }
22
23 payload := c.Payload()
24
25 for _, line := range strings.Split(payload, "\n") {
26 if strings.HasPrefix(line, "parent ") || line == "parent" {
27 t.Errorf("root commit payload must not contain a parent line, got: %q\nfull payload:\n%s", line, payload)
28 }
29 }
30}
31
32func TestPayloadWithParentHashes(t *testing.T) {
33 when := time.Date(2025, 1, 1, 12, 0, 0, 0, time.UTC)
34 sig := object.Signature{Name: "Alice", Email: "alice@example.com", When: when}
35 parent := plumbing.NewHash("0000000000000000000000000000000000000001")
36
37 c := Commit{
38 Author: sig,
39 Committer: sig,
40 Message: "second commit\n",
41 Tree: "abc123",
42 ParentHashes: []plumbing.Hash{parent},
43 }
44
45 payload := c.Payload()
46 want := "parent " + parent.String()
47 if !strings.Contains(payload, want) {
48 t.Errorf("payload missing %q\nfull payload:\n%s", want, payload)
49 }
50}
51
52func TestPayloadLegacyParentField(t *testing.T) {
53 when := time.Date(2025, 1, 1, 12, 0, 0, 0, time.UTC)
54 sig := object.Signature{Name: "Alice", Email: "alice@example.com", When: when}
55
56 c := Commit{
57 Author: sig,
58 Committer: sig,
59 Message: "second commit\n",
60 Tree: "abc123",
61 Parent: "0000000000000000000000000000000000000001",
62 }
63
64 payload := c.Payload()
65 want := "parent 0000000000000000000000000000000000000001"
66 if !strings.Contains(payload, want) {
67 t.Errorf("payload missing %q\nfull payload:\n%s", want, payload)
68 }
69}