| 
					
				 | 
			
			
				@@ -41,6 +41,78 @@ func TestIdentityDetectorMeta(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, opts[0].Name, ConfigIdentityDetectorPeopleDictPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+func TestIdentityDetectorConfigure(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id := fixtureIdentityDetector() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	facts := map[string]interface{}{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m1 := map[string]int{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	m2 := []string{} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	facts[FactIdentityDetectorPeopleDict] = m1 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	facts[FactIdentityDetectorReversedPeopleDict] = m2 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.Configure(facts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, m1, facts[FactIdentityDetectorPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, m2, facts[FactIdentityDetectorReversedPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.PeopleDict, facts[FactIdentityDetectorPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict, facts[FactIdentityDetectorReversedPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id = fixtureIdentityDetector() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	tmpf, err := ioutil.TempFile("", "hercules-test-") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Nil(t, err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	defer os.Remove(tmpf.Name()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	_, err = tmpf.WriteString(`Egor|egor@sourced.tech 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+Vadim|vadim@sourced.tech`) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Nil(t, err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Nil(t, tmpf.Close()) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorReversedPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	facts[ConfigIdentityDetectorPeopleDictPath] = tmpf.Name() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.Configure(facts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Len(t, id.PeopleDict, 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Len(t, id.ReversedPeopleDict, 1) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict[0], "Vadim") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorReversedPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id = fixtureIdentityDetector() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.PeopleDict = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.Configure(facts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.PeopleDict, facts[FactIdentityDetectorPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict, facts[FactIdentityDetectorReversedPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Len(t, id.PeopleDict, 4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Len(t, id.ReversedPeopleDict, 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict[0], "Egor") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, facts[FactIdentityDetectorPeopleCount], 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorReversedPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id = fixtureIdentityDetector() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.ReversedPeopleDict = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.Configure(facts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.PeopleDict, facts[FactIdentityDetectorPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict, facts[FactIdentityDetectorReversedPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Len(t, id.PeopleDict, 4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Len(t, id.ReversedPeopleDict, 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict[0], "Egor") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, facts[FactIdentityDetectorPeopleCount], 2) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, FactIdentityDetectorReversedPeopleDict) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	delete(facts, ConfigIdentityDetectorPeopleDictPath) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	commits := make([]*object.Commit, 0) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	iter, err := testRepository.CommitObjects() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	commit, err := iter.Next() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	for ; err != io.EOF; commit, err = iter.Next() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		if err != nil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+			panic(err) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+		commits = append(commits, commit) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	facts["commits"] = commits 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id = fixtureIdentityDetector() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.PeopleDict = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.ReversedPeopleDict = nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	id.Configure(facts) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.PeopleDict, facts[FactIdentityDetectorPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict, facts[FactIdentityDetectorReversedPeopleDict]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.True(t, len(id.PeopleDict) >= 3) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.True(t, len(id.ReversedPeopleDict) >= 4) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func TestIdentityDetectorRegistration(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	tp, exists := Registry.registered[(&IdentityDetector{}).Name()] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.True(t, exists) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -83,7 +155,7 @@ func TestLoadPeopleDict(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, id.ReversedPeopleDict[0], "Linus Torvalds") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, id.ReversedPeopleDict[1], "Vadim Markovtsev") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, id.ReversedPeopleDict[2], "Máximo Cuadros") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-	assert.Equal(t, id.ReversedPeopleDict[3], "<unmatched>") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.Equal(t, id.ReversedPeopleDict[3], UNMATCHED_AUTHOR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 /* 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -152,6 +224,7 @@ func TestGeneratePeopleDict(t *testing.T) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, id.ReversedPeopleDict[0], "vadim markovtsev|gmarkhor@gmail.com|vadim@sourced.tech") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, id.ReversedPeopleDict[1], "alexander bezzubov|bzz@apache.org") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 	assert.Equal(t, id.ReversedPeopleDict[2], "máximo cuadros|mcuadros@gmail.com") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+	assert.NotEqual(t, id.ReversedPeopleDict[len(id.ReversedPeopleDict) - 1], UNMATCHED_AUTHOR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 func TestLoadPeopleDictInvalidPath(t *testing.T) { 
			 |