| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | package leavesimport (	"bytes"	"testing"	"time"	imports2 "github.com/src-d/imports"	"github.com/stretchr/testify/assert"	gitplumbing "gopkg.in/src-d/go-git.v4/plumbing"	"gopkg.in/src-d/hercules.v10/internal/core"	"gopkg.in/src-d/hercules.v10/internal/plumbing"	"gopkg.in/src-d/hercules.v10/internal/plumbing/identity"	"gopkg.in/src-d/hercules.v10/internal/plumbing/imports"	"gopkg.in/src-d/hercules.v10/internal/test")func fixtureImportsPerDev() *ImportsPerDeveloper {	d := ImportsPerDeveloper{}	d.Initialize(test.Repository)	people := [...]string{"one@srcd", "two@srcd"}	d.reversedPeopleDict = people[:]	return &d}func TestImportsPerDeveloperMeta(t *testing.T) {	ipd := fixtureImportsPerDev()	ass := assert.New(t)	ass.Equal(ipd.Name(), "ImportsPerDeveloper")	ass.Equal(len(ipd.Provides()), 0)	ass.Equal(len(ipd.Requires()), 3)	ass.Equal(ipd.Requires()[0], imports.DependencyImports)	ass.Equal(ipd.Requires()[1], identity.DependencyAuthor)	ass.Equal(ipd.Requires()[2], plumbing.DependencyTick)	ass.Equal(ipd.Flag(), "imports-per-dev")	assert.Len(t, ipd.ListConfigurationOptions(), 0)	assert.True(t, len(ipd.Description()) > 0)	logger := core.NewLogger()	assert.NoError(t, ipd.Configure(map[string]interface{}{		core.ConfigLogger: logger,		identity.FactIdentityDetectorReversedPeopleDict: []string{"1", "2"},		plumbing.FactTickSize:                           time.Hour,	}))	ass.Equal(logger, ipd.l)	ass.Equal([]string{"1", "2"}, ipd.reversedPeopleDict)	ass.Equal(time.Hour, ipd.TickSize)}func TestImportsPerDeveloperRegistration(t *testing.T) {	summoned := core.Registry.Summon((&ImportsPerDeveloper{}).Name())	assert.Len(t, summoned, 1)	assert.Equal(t, summoned[0].Name(), "ImportsPerDeveloper")	leaves := core.Registry.GetLeaves()	matched := false	for _, tp := range leaves {		if tp.Flag() == (&ImportsPerDeveloper{}).Flag() {			matched = true			break		}	}	assert.True(t, matched)}func TestImportsPerDeveloperInitialize(t *testing.T) {	ipd := fixtureImportsPerDev()	assert.NotNil(t, ipd.imports)	assert.Equal(t, time.Hour*24, ipd.TickSize)}func TestImportsPerDeveloperConsumeFinalize(t *testing.T) {	deps := map[string]interface{}{}	deps[core.DependencyIsMerge] = false	deps[identity.DependencyAuthor] = 0	deps[plumbing.DependencyTick] = 1	imps := map[gitplumbing.Hash]imports2.File{}	imps[gitplumbing.NewHash("291286b4ac41952cbd1389fda66420ec03c1a9fe")] =		imports2.File{Lang: "Go", Path: "test.go", Imports: []string{"sys"}}	imps[gitplumbing.NewHash("c29112dbd697ad9b401333b80c18a63951bc18d9")] =		imports2.File{Lang: "Python", Path: "test.py", Imports: []string{"sys"}}	deps[imports.DependencyImports] = imps	ipd := fixtureImportsPerDev()	ipd.reversedPeopleDict = []string{"1", "2"}	_, err := ipd.Consume(deps)	assert.NoError(t, err)	assert.Equal(t, ImportsMap{		0: {"Go": {"sys": {1: 1}}, "Python": {"sys": {1: 1}}},	}, ipd.imports)	_, err = ipd.Consume(deps)	assert.NoError(t, err)	assert.Equal(t, ImportsMap{		0: {"Go": {"sys": {1: 2}}, "Python": {"sys": {1: 2}}},	}, ipd.imports)	deps[identity.DependencyAuthor] = 1	_, err = ipd.Consume(deps)	assert.NoError(t, err)	assert.Equal(t, ImportsMap{		0: {"Go": {"sys": {1: 2}}, "Python": {"sys": {1: 2}}},		1: {"Go": {"sys": {1: 1}}, "Python": {"sys": {1: 1}}},	}, ipd.imports)	deps[core.DependencyIsMerge] = true	_, err = ipd.Consume(deps)	assert.NoError(t, err)	assert.Equal(t, ImportsMap{		0: {"Go": {"sys": {1: 2}}, "Python": {"sys": {1: 2}}},		1: {"Go": {"sys": {1: 1}}, "Python": {"sys": {1: 1}}},	}, ipd.imports)	result := ipd.Finalize().(ImportsPerDeveloperResult)	assert.Equal(t, ipd.reversedPeopleDict, result.reversedPeopleDict)	assert.Equal(t, ipd.imports, result.Imports)}func TestImportsPerDeveloperSerializeText(t *testing.T) {	ipd := fixtureImportsPerDev()	res := ImportsPerDeveloperResult{Imports: ImportsMap{		0: {"Go": {"sys": {1: 2}}, "Python": {"sys": {1: 2}}},		1: {"Go": {"sys": {1: 1}}, "Python": {"sys": {1: 1}}},	}, reversedPeopleDict: []string{"one", "two"}}	buffer := &bytes.Buffer{}	assert.NoError(t, ipd.Serialize(res, false, buffer))	assert.Equal(t, `  tick_size: 0  imports:    "one": {"Go":{"sys":{"1":2}},"Python":{"sys":{"1":2}}}    "two": {"Go":{"sys":{"1":1}},"Python":{"sys":{"1":1}}}`, buffer.String())}func TestImportsPerDeveloperSerializeBinary(t *testing.T) {	ipd := fixtureImportsPerDev()	ass := assert.New(t)	res := ImportsPerDeveloperResult{Imports: ImportsMap{		0: {"Go": {"sys": {1: 2}}, "Python": {"sys": {1: 2}}},		1: {"Go": {"sys": {1: 1}}, "Python": {"sys": {1: 1}}},	}, reversedPeopleDict: []string{"one", "two"}}	buffer := &bytes.Buffer{}	ass.NoError(ipd.Serialize(res, true, buffer))	back, err := ipd.Deserialize(buffer.Bytes())	ass.NoError(err)	ass.Equal(res, back)}
 |