Skip to content

Commit 5b6ccf7

Browse files
authored
Merge pull request #209 from vmarkovtsev/master
Fix invalid changed files in --couples
2 parents f982e9a + c86cd80 commit 5b6ccf7

File tree

2 files changed

+36
-9
lines changed

2 files changed

+36
-9
lines changed

leaves/couples.go

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -143,25 +143,21 @@ func (couples *CouplesAnalysis) Consume(deps map[string]interface{}) (map[string
143143
fromName := change.From.Name
144144
switch action {
145145
case merkletrie.Insert:
146-
if !mergeMode {
146+
if !mergeMode || couples.files[toName] == nil {
147147
context = append(context, toName)
148148
couples.people[author][toName]++
149-
} else if couples.people[author][toName] == 0 {
150-
couples.people[author][toName] = 1
151149
}
152150
case merkletrie.Delete:
153151
if !mergeMode {
154152
couples.people[author][fromName]++
155-
} else if couples.people[author][fromName] == 0 {
156-
couples.people[author][fromName] = 1
157153
}
158154
case merkletrie.Modify:
159155
if fromName != toName {
160156
// renamed
161157
*couples.renames = append(
162158
*couples.renames, rename{ToName: toName, FromName: fromName})
163159
}
164-
if !mergeMode {
160+
if !mergeMode || couples.files[toName] == nil {
165161
context = append(context, toName)
166162
couples.people[author][toName]++
167163
}

leaves/couples_test.go

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,37 @@ func TestCouplesConsumeFinalize(t *testing.T) {
189189
assert.Equal(t, cr.FilesMatrix[2][2], int64(3))
190190
}
191191

192+
func TestCouplesConsumeFinalizeMerge(t *testing.T) {
193+
c := fixtureCouples()
194+
deps := map[string]interface{}{}
195+
deps[identity.DependencyAuthor] = 0
196+
deps[core.DependencyCommit], _ = test.Repository.CommitObject(gitplumbing.NewHash(
197+
"a3ee37f91f0d705ec9c41ae88426f0ae44b2fbc3"))
198+
deps[core.DependencyIsMerge] = true
199+
deps[plumbing.DependencyTreeChanges] = generateChanges("+LICENSE2", "+file2.go")
200+
c.Consume(deps)
201+
deps[plumbing.DependencyTreeChanges] = generateChanges("+file2.go", "-LICENSE2", ">file2.go>file_test.go")
202+
c.Consume(deps)
203+
assert.Equal(t, len(c.people[0]), 3)
204+
assert.Equal(t, c.people[0]["LICENSE2"], 1)
205+
assert.Equal(t, c.people[0]["file2.go"], 1)
206+
assert.Equal(t, c.people[0]["file_test.go"], 1)
207+
for i := 1; i < 3; i++ {
208+
assert.Equal(t, len(c.people[i]), 0)
209+
}
210+
assert.Equal(t, c.files["LICENSE2"], map[string]int{
211+
"LICENSE2": 1,
212+
"file2.go": 1,
213+
})
214+
assert.Equal(t, c.files["file2.go"], map[string]int{
215+
"file2.go": 1,
216+
"LICENSE2": 1,
217+
})
218+
assert.Equal(t, c.files["file_test.go"], map[string]int{
219+
"file_test.go": 1,
220+
})
221+
}
222+
192223
func TestCouplesConsumeFinalizeAuthorMissing(t *testing.T) {
193224
c := fixtureCouples()
194225
deps := map[string]interface{}{}
@@ -314,7 +345,7 @@ func TestCouplesSerialize(t *testing.T) {
314345
reversedPeopleDict: []string{"p1", "p2", "p3"},
315346
}
316347
buffer := &bytes.Buffer{}
317-
c.Serialize(result, false, buffer)
348+
assert.Nil(t, c.Serialize(result, false, buffer))
318349
assert.Equal(t, buffer.String(), ` files_coocc:
319350
index:
320351
- "five"
@@ -346,9 +377,9 @@ func TestCouplesSerialize(t *testing.T) {
346377
- "three"
347378
`)
348379
buffer = &bytes.Buffer{}
349-
c.Serialize(result, true, buffer)
380+
assert.Nil(t, c.Serialize(result, true, buffer))
350381
msg := pb.CouplesAnalysisResults{}
351-
proto.Unmarshal(buffer.Bytes(), &msg)
382+
assert.Nil(t, proto.Unmarshal(buffer.Bytes(), &msg))
352383
assert.Len(t, msg.PeopleFiles, 3)
353384
tmp1 := [...]int32{0, 1, 2}
354385
assert.Equal(t, msg.PeopleFiles[0].Files, tmp1[:])

0 commit comments

Comments
 (0)