2013-03-06 06:29:56 -06:00
|
|
|
package git
|
|
|
|
|
|
|
|
import (
|
2014-10-21 17:23:12 -05:00
|
|
|
"io/ioutil"
|
2013-03-06 06:29:56 -06:00
|
|
|
"os"
|
|
|
|
"runtime"
|
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
2013-03-06 12:18:41 -06:00
|
|
|
func TestCreateRepoAndStage(t *testing.T) {
|
|
|
|
repo := createTestRepo(t)
|
2013-03-06 13:10:48 -06:00
|
|
|
defer os.RemoveAll(repo.Workdir())
|
2013-03-06 06:29:56 -06:00
|
|
|
|
|
|
|
idx, err := repo.Index()
|
|
|
|
checkFatal(t, err)
|
2013-03-06 12:18:41 -06:00
|
|
|
err = idx.AddByPath("README")
|
2013-03-06 06:29:56 -06:00
|
|
|
checkFatal(t, err)
|
|
|
|
treeId, err := idx.WriteTree()
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
if treeId.String() != "b7119b11e8ef7a1a5a34d3ac87f5b075228ac81e" {
|
|
|
|
t.Fatalf("%v", treeId.String())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-03-20 22:49:05 -05:00
|
|
|
func TestIndexWriteTreeTo(t *testing.T) {
|
|
|
|
repo := createTestRepo(t)
|
|
|
|
defer os.RemoveAll(repo.Workdir())
|
|
|
|
|
|
|
|
repo2 := createTestRepo(t)
|
|
|
|
defer os.RemoveAll(repo.Workdir())
|
|
|
|
|
|
|
|
idx, err := repo.Index()
|
|
|
|
checkFatal(t, err)
|
|
|
|
err = idx.AddByPath("README")
|
|
|
|
checkFatal(t, err)
|
|
|
|
treeId, err := idx.WriteTreeTo(repo2)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
if treeId.String() != "b7119b11e8ef7a1a5a34d3ac87f5b075228ac81e" {
|
|
|
|
t.Fatalf("%v", treeId.String())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-05-25 11:12:50 -05:00
|
|
|
func TestIndexAddAndWriteTreeTo(t *testing.T) {
|
|
|
|
repo := createTestRepo(t)
|
|
|
|
defer os.RemoveAll(repo.Workdir())
|
|
|
|
|
|
|
|
odb, err := repo.Odb()
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
blobID, err := odb.Write([]byte("foo\n"), ObjectBlob)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
idx, err := NewIndex()
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
2014-10-21 17:23:12 -05:00
|
|
|
entry := IndexEntry{
|
2014-05-25 11:12:50 -05:00
|
|
|
Path: "README",
|
2014-10-21 17:23:12 -05:00
|
|
|
Id: blobID,
|
2014-05-25 11:12:50 -05:00
|
|
|
Mode: FilemodeBlob,
|
|
|
|
}
|
|
|
|
|
|
|
|
err = idx.Add(&entry)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
treeId, err := idx.WriteTreeTo(repo)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
if treeId.String() != "b7119b11e8ef7a1a5a34d3ac87f5b075228ac81e" {
|
|
|
|
t.Fatalf("%v", treeId.String())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-10-21 17:23:12 -05:00
|
|
|
func TestIndexAddAllNoCallback(t *testing.T) {
|
|
|
|
repo := createTestRepo(t)
|
|
|
|
defer os.RemoveAll(repo.Workdir())
|
|
|
|
|
|
|
|
err := ioutil.WriteFile(repo.Workdir()+"/README", []byte("foo\n"), 0644)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
idx, err := repo.Index()
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
err = idx.AddAll([]string{}, IndexAddDefault, nil)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
treeId, err := idx.WriteTreeTo(repo)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
if treeId.String() != "b7119b11e8ef7a1a5a34d3ac87f5b075228ac81e" {
|
|
|
|
t.Fatalf("%v", treeId.String())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestIndexAddAllCallback(t *testing.T) {
|
|
|
|
repo := createTestRepo(t)
|
|
|
|
defer os.RemoveAll(repo.Workdir())
|
|
|
|
|
|
|
|
err := ioutil.WriteFile(repo.Workdir()+"/README", []byte("foo\n"), 0644)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
idx, err := repo.Index()
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
cbPath := ""
|
|
|
|
err = idx.AddAll([]string{}, IndexAddDefault, func(p, mP string) int {
|
|
|
|
cbPath = p
|
|
|
|
return 0
|
|
|
|
})
|
|
|
|
checkFatal(t, err)
|
|
|
|
if cbPath != "README" {
|
|
|
|
t.Fatalf("%v", cbPath)
|
|
|
|
}
|
|
|
|
|
|
|
|
treeId, err := idx.WriteTreeTo(repo)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
|
|
|
if treeId.String() != "b7119b11e8ef7a1a5a34d3ac87f5b075228ac81e" {
|
|
|
|
t.Fatalf("%v", treeId.String())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-03-06 06:29:56 -06:00
|
|
|
func checkFatal(t *testing.T, err error) {
|
|
|
|
if err == nil {
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// The failure happens at wherever we were called, not here
|
|
|
|
_, file, line, ok := runtime.Caller(1)
|
|
|
|
if !ok {
|
|
|
|
t.Fatal()
|
|
|
|
}
|
|
|
|
|
2013-03-06 12:18:41 -06:00
|
|
|
t.Fatalf("Fail at %v:%v; %v", file, line, err)
|
2013-03-06 06:29:56 -06:00
|
|
|
}
|