MCPcopy
hub / github.com/go-git/go-git / TestDecodeRequiresTreeFirst

Method TestDecodeRequiresTreeFirst

plumbing/object/commit_test.go:537–600  ·  view source on GitHub ↗
(c *C)

Source from the content-addressed store, hash-verified

535}
536
537func (s *SuiteCommit) TestDecodeRequiresTreeFirst(c *C) {
538 const (
539 validTree = "eba74343e2f15d62adedfd8c883ee0262b5c8021"
540 validParent = "35e85108805c84807bc66a02d91535e1e24b38b9"
541 validIdent = "Foo <foo@example.local> 1427802494 +0200"
542 )
543
544 cases := []struct {
545 name string
546 raw string
547 }{
548 {
549 name: "missing tree",
550 raw: "author " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
551 },
552 {
553 name: "parent before tree",
554 raw: "parent " + validParent + "\ntree " + validTree + "\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
555 },
556 {
557 name: "extra header before tree",
558 raw: "x-extra hi\ntree " + validTree + "\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
559 },
560 {
561 name: "empty",
562 raw: "",
563 },
564 {
565 name: "non-hex tree value",
566 raw: "tree zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
567 },
568 {
569 name: "tree value too short",
570 raw: "tree abcd\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
571 },
572 {
573 name: "tree value too long",
574 raw: "tree " + validTree + "00\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
575 },
576 {
577 name: "tree value missing",
578 raw: "tree\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
579 },
580 {
581 name: "non-hex parent value",
582 raw: "tree " + validTree + "\nparent zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
583 },
584 {
585 name: "parent value too short",
586 raw: "tree " + validTree + "\nparent abcd\nauthor " + validIdent + "\ncommitter " + validIdent + "\n\nmsg\n",
587 },
588 }
589
590 for _, tc := range cases {
591 c.Log(tc.name)
592 obj := &plumbing.MemoryObject{}
593 obj.SetType(plumbing.CommitObject)
594 _, err := obj.Write([]byte(tc.raw))

Callers

nothing calls this directly

Calls 5

SetTypeMethod · 0.95
WriteMethod · 0.95
LogMethod · 0.80
IsMethod · 0.80
DecodeMethod · 0.65

Tested by

no test coverage detected