Add a test for references
This commit is contained in:
parent
1a79563794
commit
ddbe13dab4
|
@ -0,0 +1,74 @@
|
|||
package git
|
||||
|
||||
import (
|
||||
"os"
|
||||
"runtime"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
||||
func TestRefModification(t *testing.T) {
|
||||
repo := createTestRepo(t)
|
||||
defer os.RemoveAll(repo.Path())
|
||||
|
||||
loc, err := time.LoadLocation("Europe/Berlin")
|
||||
checkFatal(t, err)
|
||||
sig := &Signature{
|
||||
Name: "Rand Om Hacker",
|
||||
Email: "random@hacker.com",
|
||||
When: time.Date(2013, 03, 06, 14, 30, 0, 0, loc),
|
||||
}
|
||||
|
||||
idx, err := repo.Index()
|
||||
checkFatal(t, err)
|
||||
err = idx.AddByPath("README")
|
||||
checkFatal(t, err)
|
||||
treeId, err := idx.WriteTree()
|
||||
checkFatal(t, err)
|
||||
|
||||
message := "This is a commit\n"
|
||||
tree, err := repo.LookupTree(treeId)
|
||||
checkFatal(t, err)
|
||||
commitId, err := repo.CreateCommit("HEAD", sig, sig, message, tree)
|
||||
checkFatal(t, err)
|
||||
|
||||
_, err = repo.CreateReference("refs/tags/tree", treeId, true)
|
||||
checkFatal(t, err)
|
||||
|
||||
tag, err := repo.LookupReference("refs/tags/tree")
|
||||
checkFatal(t, err)
|
||||
checkRefType(t, tag, OID)
|
||||
|
||||
ref, err := repo.LookupReference("HEAD")
|
||||
checkFatal(t, err)
|
||||
checkRefType(t, ref, SYMBOLIC)
|
||||
|
||||
ref, err = ref.Resolve()
|
||||
checkFatal(t, err)
|
||||
checkRefType(t, ref, OID)
|
||||
|
||||
if commitId.String() != ref.Target().String() {
|
||||
t.Fatalf("Wrong ref target")
|
||||
}
|
||||
|
||||
_, err = tag.Rename("refs/tags/renamed", false)
|
||||
checkFatal(t, err)
|
||||
tag, err = repo.LookupReference("refs/tags/renamed")
|
||||
checkFatal(t, err)
|
||||
checkRefType(t, ref, OID)
|
||||
|
||||
}
|
||||
|
||||
func checkRefType(t *testing.T, ref *Reference, kind int) {
|
||||
if ref.Type() == kind {
|
||||
return
|
||||
}
|
||||
|
||||
// The failure happens at wherever we were called, not here
|
||||
_, file, line, ok := runtime.Caller(1)
|
||||
if !ok {
|
||||
t.Fatal()
|
||||
}
|
||||
|
||||
t.Fatalf("Wrong ref type at %v:%v; have %v, expected %v", file, line, ref.Type(), kind)
|
||||
}
|
Loading…
Reference in New Issue