2014-03-20 23:56:41 -05:00
|
|
|
package git
|
|
|
|
|
|
|
|
import (
|
2014-03-21 00:54:18 -05:00
|
|
|
"errors"
|
2014-03-20 23:56:41 -05:00
|
|
|
"testing"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDiffTreeToTree(t *testing.T) {
|
|
|
|
repo := createTestRepo(t)
|
|
|
|
defer repo.Free()
|
2014-03-21 00:54:18 -05:00
|
|
|
//defer os.RemoveAll(repo.Workdir())
|
2014-03-20 23:56:41 -05:00
|
|
|
|
|
|
|
_, originalTreeId := seedTestRepo(t, repo)
|
|
|
|
originalTree, err := repo.LookupTree(originalTreeId)
|
|
|
|
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
2014-03-21 00:54:18 -05:00
|
|
|
_, newTreeId := updateReadme(t, repo, "file changed\n")
|
|
|
|
|
2014-03-20 23:56:41 -05:00
|
|
|
newTree, err := repo.LookupTree(newTreeId)
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
2014-03-21 00:54:18 -05:00
|
|
|
diff, err := repo.DiffTreeToTree(originalTree, newTree)
|
2014-03-20 23:56:41 -05:00
|
|
|
checkFatal(t, err)
|
|
|
|
|
2014-03-21 00:54:18 -05:00
|
|
|
if diff == nil {
|
|
|
|
t.Fatal("no diff returned")
|
|
|
|
}
|
|
|
|
|
2014-03-20 23:56:41 -05:00
|
|
|
files := make([]string, 0)
|
|
|
|
|
2014-03-21 00:54:18 -05:00
|
|
|
err = diff.ForEachFile(func(file *DiffDelta) error {
|
|
|
|
files = append(files, file.OldFile.Path)
|
2014-03-20 23:56:41 -05:00
|
|
|
return nil
|
|
|
|
})
|
|
|
|
|
|
|
|
checkFatal(t, err)
|
|
|
|
|
2014-03-21 00:54:18 -05:00
|
|
|
if len(files) != 1 {
|
2014-03-20 23:56:41 -05:00
|
|
|
t.Fatal("Incorrect number of files in diff")
|
|
|
|
}
|
|
|
|
|
|
|
|
if files[0] != "README" {
|
|
|
|
t.Fatal("File in diff was expected to be README")
|
|
|
|
}
|
2014-03-21 00:54:18 -05:00
|
|
|
|
|
|
|
errTest := errors.New("test error")
|
|
|
|
|
|
|
|
err = diff.ForEachFile(func(file *DiffDelta) error {
|
|
|
|
return errTest
|
|
|
|
})
|
|
|
|
|
|
|
|
if err != errTest {
|
|
|
|
t.Fatal("Expected custom error to be returned")
|
|
|
|
}
|
|
|
|
|
2014-03-20 23:56:41 -05:00
|
|
|
}
|