瀏覽代碼

Fix the tests

Signed-off-by: Vadim Markovtsev <vadim@sourced.tech>
Vadim Markovtsev 6 年之前
父節點
當前提交
e4d5b89e42
共有 3 個文件被更改,包括 40 次插入17 次删除
  1. 7 0
      internal/burndown/file_test.go
  2. 3 0
      internal/core/forks.go
  3. 30 17
      internal/core/pipeline_test.go

+ 7 - 0
internal/burndown/file_test.go

@@ -642,4 +642,11 @@ func TestFileMergeNoop(t *testing.T) {
 	dirty = file1.Merge(7, file2)
 	dirty = file1.Merge(7, file2)
 	// because the hashes are still the same
 	// because the hashes are still the same
 	assert.False(t, dirty)
 	assert.False(t, dirty)
+}
+
+func TestFileMergeNil(t *testing.T) {
+	file, _ := fixtureFile()
+	assert.Panics(t, func() {
+		file.Merge(1, nil)
+	})
 }
 }

+ 3 - 0
internal/core/forks.go

@@ -606,6 +606,9 @@ func optimizePlan(plan []runAction) []runAction {
 			for _, item := range p.Items {
 			for _, item := range p.Items {
 				lastMentioned[item] = i
 				lastMentioned[item] = i
 			}
 			}
+		case runActionEmerge:
+			lives[firstItem]++
+			lastMentioned[firstItem] = i
 		}
 		}
 	}
 	}
 	branchesToDelete := map[int]bool{}
 	branchesToDelete := map[int]bool{}

+ 30 - 17
internal/core/pipeline_test.go

@@ -156,7 +156,7 @@ func (item *dependingTestPipelineItem) Consume(deps map[string]interface{}) (map
 }
 }
 
 
 func (item *dependingTestPipelineItem) Fork(n int) []PipelineItem {
 func (item *dependingTestPipelineItem) Fork(n int) []PipelineItem {
-	return nil
+	return make([]PipelineItem, n)
 }
 }
 
 
 func (item *dependingTestPipelineItem) Merge(branches []PipelineItem) {
 func (item *dependingTestPipelineItem) Merge(branches []PipelineItem) {
@@ -210,14 +210,14 @@ func TestPipelineRun(t *testing.T) {
 	assert.Equal(t, 2, len(result))
 	assert.Equal(t, 2, len(result))
 	assert.Equal(t, item, result[item].(*testPipelineItem))
 	assert.Equal(t, item, result[item].(*testPipelineItem))
 	common := result[nil].(*CommonAnalysisResult)
 	common := result[nil].(*CommonAnalysisResult)
-	assert.Equal(t, common.BeginTime, int64(1481719092))
-	assert.Equal(t, common.EndTime, int64(1481719092))
+	assert.Equal(t, common.BeginTime, int64(1481719198))
+	assert.Equal(t, common.EndTime, int64(1481719198))
 	assert.Equal(t, common.CommitsNumber, 1)
 	assert.Equal(t, common.CommitsNumber, 1)
 	assert.True(t, common.RunTime.Nanoseconds()/1e6 < 100)
 	assert.True(t, common.RunTime.Nanoseconds()/1e6 < 100)
 	assert.True(t, item.DepsConsumed)
 	assert.True(t, item.DepsConsumed)
 	assert.True(t, item.CommitMatches)
 	assert.True(t, item.CommitMatches)
 	assert.True(t, item.IndexMatches)
 	assert.True(t, item.IndexMatches)
-	assert.False(t, item.Forked)
+	assert.True(t, item.Forked)
 	assert.False(t, *item.Merged)
 	assert.False(t, *item.Merged)
 	pipeline.RemoveItem(item)
 	pipeline.RemoveItem(item)
 	result, err = pipeline.Run(commits)
 	result, err = pipeline.Run(commits)
@@ -261,13 +261,16 @@ func TestPipelineOnProgress(t *testing.T) {
 	progressOk := 0
 	progressOk := 0
 
 
 	onProgress := func(step int, total int) {
 	onProgress := func(step int, total int) {
-		if step == 1 && total == 3 {
+		if step == 1 && total == 4 {
+			progressOk++
+		}
+		if step == 2 && total == 4 {
 			progressOk++
 			progressOk++
 		}
 		}
-		if step == 2 && total == 3 {
+		if step == 3 && total == 4 {
 			progressOk++
 			progressOk++
 		}
 		}
-		if step == 3 && total == 3 {
+		if step == 4 && total == 4 {
 			progressOk++
 			progressOk++
 		}
 		}
 	}
 	}
@@ -279,7 +282,7 @@ func TestPipelineOnProgress(t *testing.T) {
 	result, err := pipeline.Run(commits)
 	result, err := pipeline.Run(commits)
 	assert.Nil(t, err)
 	assert.Nil(t, err)
 	assert.Equal(t, 1, len(result))
 	assert.Equal(t, 1, len(result))
-	assert.Equal(t, 3, progressOk)
+	assert.Equal(t, 4, progressOk)
 }
 }
 
 
 func TestPipelineCommits(t *testing.T) {
 func TestPipelineCommits(t *testing.T) {
@@ -427,10 +430,13 @@ func TestPrepareRunPlanTiny(t *testing.T) {
 		t.Fatal(err)
 		t.Fatal(err)
 	}
 	}
 	plan := prepareRunPlan([]*object.Commit{rootCommit})
 	plan := prepareRunPlan([]*object.Commit{rootCommit})
-	assert.Len(t, plan, 1)
-	assert.Equal(t, runActionCommit, plan[0].Action)
+	assert.Len(t, plan, 2)
+	assert.Equal(t, runActionEmerge, plan[0].Action)
 	assert.Equal(t, 0, plan[0].Items[0])
 	assert.Equal(t, 0, plan[0].Items[0])
 	assert.Equal(t, "cce947b98a050c6d356bc6ba95030254914027b1", plan[0].Commit.Hash.String())
 	assert.Equal(t, "cce947b98a050c6d356bc6ba95030254914027b1", plan[0].Commit.Hash.String())
+	assert.Equal(t, runActionCommit, plan[1].Action)
+	assert.Equal(t, 0, plan[1].Items[0])
+	assert.Equal(t, "cce947b98a050c6d356bc6ba95030254914027b1", plan[1].Commit.Hash.String())
 }
 }
 
 
 func TestPrepareRunPlanSmall(t *testing.T) {
 func TestPrepareRunPlanSmall(t *testing.T) {
@@ -459,16 +465,19 @@ func TestPrepareRunPlanSmall(t *testing.T) {
 		}
 		}
 	}*/
 	}*/
 	// fork, merge and one artificial commit per branch
 	// fork, merge and one artificial commit per branch
-	assert.Len(t, plan, len(commits))
-	assert.Equal(t, runActionCommit, plan[0].Action)
-	assert.Equal(t, 0, plan[0].Items[0])
+	assert.Len(t, plan, len(commits) + 1)
+	assert.Equal(t, runActionEmerge, plan[0].Action)
 	assert.Equal(t, "cce947b98a050c6d356bc6ba95030254914027b1", plan[0].Commit.Hash.String())
 	assert.Equal(t, "cce947b98a050c6d356bc6ba95030254914027b1", plan[0].Commit.Hash.String())
+	assert.Equal(t, 0, plan[0].Items[0])
 	assert.Equal(t, runActionCommit, plan[1].Action)
 	assert.Equal(t, runActionCommit, plan[1].Action)
 	assert.Equal(t, 0, plan[1].Items[0])
 	assert.Equal(t, 0, plan[1].Items[0])
-	assert.Equal(t, "a3ee37f91f0d705ec9c41ae88426f0ae44b2fbc3", plan[1].Commit.Hash.String())
-	assert.Equal(t, runActionCommit, plan[9].Action)
-	assert.Equal(t, 0, plan[9].Items[0])
-	assert.Equal(t, "a28e9064c70618dc9d68e1401b889975e0680d11", plan[9].Commit.Hash.String())
+	assert.Equal(t, "cce947b98a050c6d356bc6ba95030254914027b1", plan[1].Commit.Hash.String())
+	assert.Equal(t, runActionCommit, plan[2].Action)
+	assert.Equal(t, 0, plan[2].Items[0])
+	assert.Equal(t, "a3ee37f91f0d705ec9c41ae88426f0ae44b2fbc3", plan[2].Commit.Hash.String())
+	assert.Equal(t, runActionCommit, plan[10].Action)
+	assert.Equal(t, 0, plan[10].Items[0])
+	assert.Equal(t, "a28e9064c70618dc9d68e1401b889975e0680d11", plan[10].Commit.Hash.String())
 }
 }
 
 
 func TestMergeDag(t *testing.T) {
 func TestMergeDag(t *testing.T) {
@@ -587,6 +596,7 @@ func TestPrepareRunPlanBig(t *testing.T) {
 			numForks := 0
 			numForks := 0
 			numMerges := 0
 			numMerges := 0
 			numDeletes := 0
 			numDeletes := 0
+			numEmerges := 0
 			processed := map[plumbing.Hash]map[int]int{}
 			processed := map[plumbing.Hash]map[int]int{}
 			for _, p := range plan {
 			for _, p := range plan {
 				switch p.Action {
 				switch p.Action {
@@ -614,6 +624,8 @@ func TestPrepareRunPlanBig(t *testing.T) {
 					numMerges++
 					numMerges++
 				case runActionDelete:
 				case runActionDelete:
 					numDeletes++
 					numDeletes++
+				case runActionEmerge:
+					numEmerges++
 				}
 				}
 			}
 			}
 			for c, branches := range processed {
 			for c, branches := range processed {
@@ -625,6 +637,7 @@ func TestPrepareRunPlanBig(t *testing.T) {
 			assert.Equal(t, numForks, testCase[4], fmt.Sprintf("forks %v", testCase))
 			assert.Equal(t, numForks, testCase[4], fmt.Sprintf("forks %v", testCase))
 			assert.Equal(t, numMerges, testCase[5], fmt.Sprintf("merges %v", testCase))
 			assert.Equal(t, numMerges, testCase[5], fmt.Sprintf("merges %v", testCase))
 			assert.Equal(t, numDeletes, testCase[6], fmt.Sprintf("deletes %v", testCase))
 			assert.Equal(t, numDeletes, testCase[6], fmt.Sprintf("deletes %v", testCase))
+			assert.Equal(t, numEmerges, 1, fmt.Sprintf("emerges %v", testCase))
 		}()
 		}()
 	}
 	}
 }
 }