소스 검색

Add TreeDiff tests

Vadim Markovtsev 7 년 전
부모
커밋
8453d74594
1개의 변경된 파일89개의 추가작업 그리고 0개의 파일을 삭제
  1. 89 0
      tree_diff_test.go

+ 89 - 0
tree_diff_test.go

@@ -0,0 +1,89 @@
+package hercules
+
+import (
+	"testing"
+
+	"github.com/stretchr/testify/assert"
+	"gopkg.in/src-d/go-git.v4/plumbing"
+	"gopkg.in/src-d/go-git.v4/plumbing/object"
+	"gopkg.in/src-d/go-git.v4/utils/merkletrie"
+)
+
+func fixtureTreeDiff() *TreeDiff {
+	td := TreeDiff{}
+	td.Initialize(testRepository)
+	return &td
+}
+
+func TestTreeDiffMeta(t *testing.T) {
+	td := fixtureTreeDiff()
+	assert.Equal(t, td.Name(), "TreeDiff")
+	assert.Equal(t, len(td.Requires()), 0)
+	assert.Equal(t, len(td.Provides()), 1)
+	assert.Equal(t, td.Provides()[0], "changes")
+}
+
+func TestTreeDiffConsume(t *testing.T) {
+	td := fixtureTreeDiff()
+	commit, _ := testRepository.CommitObject(plumbing.NewHash(
+		"2b1ed978194a94edeabbca6de7ff3b5771d4d665"))
+	deps := map[string]interface{}{}
+	deps["commit"] = commit
+	prevCommit, _ := testRepository.CommitObject(plumbing.NewHash(
+		"fbe766ffdc3f87f6affddc051c6f8b419beea6a2"))
+	td.previousTree, _ = prevCommit.Tree()
+	res, err := td.Consume(deps)
+	assert.Nil(t, err)
+	assert.Equal(t, len(res), 1)
+	changes := res["changes"].(object.Changes)
+	assert.Equal(t, len(changes), 12)
+	baseline := map[string]merkletrie.Action{
+		"analyser.go": merkletrie.Delete,
+		"cmd/hercules/main.go": merkletrie.Modify,
+		"blob_cache.go": merkletrie.Insert,
+		"burndown.go": merkletrie.Insert,
+		"day.go": merkletrie.Insert,
+		"dummies.go": merkletrie.Insert,
+		"identity.go": merkletrie.Insert,
+		"pipeline.go": merkletrie.Insert,
+		"renames.go": merkletrie.Insert,
+		"toposort/toposort.go": merkletrie.Insert,
+		"toposort/toposort_test.go": merkletrie.Insert,
+		"tree_diff.go": merkletrie.Insert,
+	}
+	for _, change := range changes {
+		action, err := change.Action()
+		assert.Nil(t, err)
+		if change.From.Name != "" {
+			assert.Contains(t, baseline, change.From.Name)
+			assert.Equal(t, baseline[change.From.Name], action)
+		} else {
+			assert.Contains(t, baseline, change.To.Name)
+			assert.Equal(t, baseline[change.To.Name], action)
+		}
+	}
+}
+
+func TestTreeDiffConsumeFirst(t *testing.T) {
+	td := fixtureTreeDiff()
+	commit, _ := testRepository.CommitObject(plumbing.NewHash(
+		"2b1ed978194a94edeabbca6de7ff3b5771d4d665"))
+	deps := map[string]interface{}{}
+	deps["commit"] = commit
+	res, err := td.Consume(deps)
+	assert.Nil(t, err)
+	assert.Equal(t, len(res), 1)
+	changes := res["changes"].(object.Changes)
+	assert.Equal(t, len(changes), 21)
+	for _, change := range changes {
+		action, err := change.Action()
+		assert.Nil(t, err)
+		assert.Equal(t, action, merkletrie.Insert)
+	}
+}
+
+func TestTreeDiffFinalize(t *testing.T) {
+	id := fixtureTreeDiff()
+	res := id.Finalize()
+	assert.Nil(t, res)
+}