Skip to content

Commit 6d09c8d

Browse files
committed
Add tests for logger initialization
Signed-off-by: Robert Lin <[email protected]>
1 parent aca41e9 commit 6d09c8d

22 files changed

+149
-27
lines changed

Gopkg.lock

Lines changed: 6 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/core/pipeline.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -658,11 +658,15 @@ func (pipeline *Pipeline) Initialize(facts map[string]interface{}) error {
658658
if facts == nil {
659659
facts = map[string]interface{}{}
660660
}
661+
662+
// set logger from facts, otherwise set the pipeline's logger as the logger
663+
// to be used by all analysis tasks by setting the fact
661664
if l, exists := facts[ConfigLogger].(Logger); exists {
662665
pipeline.l = l
663666
} else {
664667
facts[ConfigLogger] = pipeline.l
665668
}
669+
666670
if _, exists := facts[ConfigPipelineCommits]; !exists {
667671
var err error
668672
facts[ConfigPipelineCommits], err = pipeline.Commits(false)

internal/core/pipeline_test.go

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"time"
1212

1313
"github.com/stretchr/testify/assert"
14+
"github.com/stretchr/testify/require"
1415
"gopkg.in/src-d/go-git.v4"
1516
"gopkg.in/src-d/go-git.v4/plumbing"
1617
"gopkg.in/src-d/go-git.v4/plumbing/object"
@@ -32,6 +33,7 @@ type testPipelineItem struct {
3233
InitializeRaises bool
3334
InitializePanics bool
3435
ConsumePanics bool
36+
Logger Logger
3537
}
3638

3739
func (item *testPipelineItem) Name() string {
@@ -51,6 +53,9 @@ func (item *testPipelineItem) Configure(facts map[string]interface{}) error {
5153
if item.ConfigureRaises {
5254
return errors.New("test1")
5355
}
56+
if l, ok := facts[ConfigLogger].(Logger); ok {
57+
item.Logger = l
58+
}
5459
return nil
5560
}
5661

@@ -272,31 +277,56 @@ func TestPipelineErrors(t *testing.T) {
272277
pipeline.AddItem(item)
273278
item.ConfigureRaises = true
274279
err := pipeline.Initialize(map[string]interface{}{})
275-
assert.NotNil(t, err)
280+
assert.Error(t, err)
276281
assert.Contains(t, err.Error(), "configure")
277282
assert.Contains(t, err.Error(), "test1")
278283
item.ConfigureRaises = false
279284
item.InitializeRaises = true
280285
err = pipeline.Initialize(map[string]interface{}{})
281-
assert.NotNil(t, err)
286+
assert.Error(t, err)
282287
assert.Contains(t, err.Error(), "initialize")
283288
assert.Contains(t, err.Error(), "test2")
284289
item.InitializeRaises = false
285290
item.InitializePanics = true
286291
assert.Panics(t, func() { pipeline.Initialize(map[string]interface{}{}) })
287292
}
288293

294+
func TestPipelineInitialize(t *testing.T) {
295+
t.Run("without logger fact", func(t *testing.T) {
296+
pipeline := NewPipeline(test.Repository)
297+
item := &testPipelineItem{}
298+
pipeline.AddItem(item)
299+
require.NoError(t, pipeline.Initialize(map[string]interface{}{}))
300+
// pipeline logger should be initialized, and item logger should be the same
301+
require.NotNil(t, pipeline.l)
302+
assert.Equal(t, pipeline.l, item.Logger)
303+
})
304+
305+
t.Run("with logger fact", func(t *testing.T) {
306+
pipeline := NewPipeline(test.Repository)
307+
item := &testPipelineItem{}
308+
logger := NewLogger()
309+
pipeline.AddItem(item)
310+
require.NoError(t, pipeline.Initialize(map[string]interface{}{
311+
ConfigLogger: logger,
312+
}))
313+
// pipeline logger should be set, and the item logger should be the same
314+
assert.Equal(t, logger, pipeline.l)
315+
assert.Equal(t, logger, item.Logger)
316+
})
317+
}
318+
289319
func TestPipelineRun(t *testing.T) {
290320
pipeline := NewPipeline(test.Repository)
291321
item := &testPipelineItem{}
292322
pipeline.AddItem(item)
293-
assert.Nil(t, pipeline.Initialize(map[string]interface{}{}))
323+
assert.NoError(t, pipeline.Initialize(map[string]interface{}{}))
294324
assert.True(t, item.Initialized)
295325
commits := make([]*object.Commit, 1)
296326
commits[0], _ = test.Repository.CommitObject(plumbing.NewHash(
297327
"af9ddc0db70f09f3f27b4b98e415592a7485171c"))
298328
result, err := pipeline.Run(commits)
299-
assert.Nil(t, err)
329+
assert.NoError(t, err)
300330
assert.Equal(t, 2, len(result))
301331
assert.Equal(t, item, result[item].(*testPipelineItem))
302332
common := result[nil].(*CommonAnalysisResult)

internal/plumbing/diff.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,6 @@ func (diff *FileDiff) ListConfigurationOptions() []core.ConfigurationOption {
8888
func (diff *FileDiff) Configure(facts map[string]interface{}) error {
8989
if l, exists := facts[core.ConfigLogger].(core.Logger); exists {
9090
diff.l = l
91-
} else {
92-
diff.l = core.NewLogger()
9391
}
9492
if val, exists := facts[ConfigFileDiffDisableCleanup].(bool); exists {
9593
diff.CleanupDisabled = val

internal/plumbing/diff_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,11 @@ func TestFileDiffMeta(t *testing.T) {
2727
assert.Len(t, fd.ListConfigurationOptions(), 2)
2828
assert.Equal(t, fd.ListConfigurationOptions()[0].Name, items.ConfigFileDiffDisableCleanup)
2929
assert.Equal(t, fd.ListConfigurationOptions()[1].Name, items.ConfigFileWhitespaceIgnore)
30-
facts := map[string]interface{}{}
31-
facts[items.ConfigFileDiffDisableCleanup] = true
32-
facts[items.ConfigFileWhitespaceIgnore] = true
33-
fd.Configure(facts)
30+
assert.NoError(t, fd.Configure(map[string]interface{}{
31+
core.ConfigLogger: core.NewLogger(),
32+
items.ConfigFileDiffDisableCleanup: true,
33+
items.ConfigFileWhitespaceIgnore: true,
34+
}))
3435
assert.True(t, fd.CleanupDisabled)
3536
assert.True(t, fd.WhitespaceIgnore)
3637
}

internal/plumbing/identity/identity_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ func TestIdentityDetectorMeta(t *testing.T) {
4141
opts := id.ListConfigurationOptions()
4242
assert.Len(t, opts, 1)
4343
assert.Equal(t, opts[0].Name, ConfigIdentityDetectorPeopleDictPath)
44+
logger := core.NewLogger()
45+
assert.NoError(t, id.Configure(map[string]interface{}{
46+
core.ConfigLogger: logger,
47+
}))
48+
assert.Equal(t, logger, id.l)
4449
}
4550

4651
func TestIdentityDetectorConfigure(t *testing.T) {

internal/plumbing/languages.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,6 @@ func (langs *LanguagesDetection) ListConfigurationOptions() []core.Configuration
5454
func (langs *LanguagesDetection) Configure(facts map[string]interface{}) error {
5555
if l, exists := facts[core.ConfigLogger].(core.Logger); exists {
5656
langs.l = l
57-
} else {
58-
langs.l = core.NewLogger()
5957
}
6058
return nil
6159
}

internal/plumbing/languages_test.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,13 @@ func TestLanguagesDetectionMeta(t *testing.T) {
2020
assert.Equal(t, ls.Requires()[1], DependencyBlobCache)
2121
opts := ls.ListConfigurationOptions()
2222
assert.Len(t, opts, 0)
23-
assert.Nil(t, ls.Configure(nil))
24-
assert.Nil(t, ls.Initialize(nil))
23+
assert.NoError(t, ls.Configure(nil))
24+
logger := core.NewLogger()
25+
assert.NoError(t, ls.Configure(map[string]interface{}{
26+
core.ConfigLogger: logger,
27+
}))
28+
assert.Equal(t, logger, ls.l)
29+
assert.NoError(t, ls.Initialize(nil))
2530
}
2631

2732
func TestLanguagesDetectionRegistration(t *testing.T) {

internal/plumbing/line_stats_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ func TestLinesStatsMeta(t *testing.T) {
2323
assert.Equal(t, ra.Requires()[1], items.DependencyBlobCache)
2424
assert.Equal(t, ra.Requires()[2], items.DependencyFileDiff)
2525
assert.Nil(t, ra.ListConfigurationOptions())
26-
assert.Nil(t, ra.Configure(nil))
26+
assert.NoError(t, ra.Configure(map[string]interface{}{
27+
core.ConfigLogger: core.NewLogger(),
28+
}))
2729
for _, f := range ra.Fork(10) {
2830
assert.Equal(t, f, ra)
2931
}

internal/plumbing/renames_test.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,17 @@ func TestRenameAnalysisMeta(t *testing.T) {
3434
assert.Len(t, opts, 1)
3535
assert.Equal(t, opts[0].Name, ConfigRenameAnalysisSimilarityThreshold)
3636
ra.SimilarityThreshold = 0
37-
facts := map[string]interface{}{}
38-
facts[ConfigRenameAnalysisSimilarityThreshold] = 70
39-
ra.Configure(facts)
37+
38+
assert.NoError(t, ra.Configure(map[string]interface{}{
39+
ConfigRenameAnalysisSimilarityThreshold: 70,
40+
}))
4041
assert.Equal(t, ra.SimilarityThreshold, 70)
41-
delete(facts, ConfigRenameAnalysisSimilarityThreshold)
42-
ra.Configure(facts)
42+
43+
logger := core.NewLogger()
44+
assert.NoError(t, ra.Configure(map[string]interface{}{
45+
core.ConfigLogger: logger,
46+
}))
47+
assert.Equal(t, logger, ra.l)
4348
assert.Equal(t, ra.SimilarityThreshold, 70)
4449
}
4550

internal/plumbing/ticks_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,11 @@ func TestTicksSinceStartMeta(t *testing.T) {
3131
assert.Equal(t, tss.Provides()[0], DependencyTick)
3232
assert.Equal(t, len(tss.Requires()), 0)
3333
assert.Len(t, tss.ListConfigurationOptions(), 1)
34-
tss.Configure(map[string]interface{}{})
34+
logger := core.NewLogger()
35+
assert.NoError(t, tss.Configure(map[string]interface{}{
36+
core.ConfigLogger: logger,
37+
}))
38+
assert.Equal(t, logger, tss.l)
3539
}
3640

3741
func TestTicksSinceStartRegistration(t *testing.T) {

internal/plumbing/tree_diff_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ func TestTreeDiffMeta(t *testing.T) {
2626
assert.Equal(t, td.Provides()[0], DependencyTreeChanges)
2727
opts := td.ListConfigurationOptions()
2828
assert.Len(t, opts, 4)
29+
logger := core.NewLogger()
30+
assert.NoError(t, td.Configure(map[string]interface{}{
31+
core.ConfigLogger: logger,
32+
}))
33+
assert.Equal(t, logger, td.l)
2934
}
3035

3136
func TestTreeDiffConfigure(t *testing.T) {

internal/plumbing/uast/diff_refiner_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ func TestFileDiffRefinerMeta(t *testing.T) {
3737
features := fd.Features()
3838
assert.Len(t, features, 1)
3939
assert.Equal(t, features[0], FeatureUast)
40+
logger := core.NewLogger()
41+
assert.NoError(t, fd.Configure(map[string]interface{}{
42+
core.ConfigLogger: logger,
43+
}))
44+
assert.Equal(t, logger, fd.l)
4045
}
4146

4247
func TestFileDiffRefinerRegistration(t *testing.T) {

internal/plumbing/uast/uast_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,11 @@ func TestUASTExtractorMeta(t *testing.T) {
6060
feats := exr.Features()
6161
assert.Len(t, feats, 1)
6262
assert.Equal(t, feats[0], FeatureUast)
63+
logger := core.NewLogger()
64+
assert.NoError(t, exr.Configure(map[string]interface{}{
65+
core.ConfigLogger: logger,
66+
}))
67+
assert.Equal(t, logger, exr.l)
6368
}
6469

6570
func TestUASTExtractorConfiguration(t *testing.T) {
@@ -239,6 +244,11 @@ func TestUASTChangesMeta(t *testing.T) {
239244
assert.Equal(t, ch.Requires()[1], items.DependencyTreeChanges)
240245
opts := ch.ListConfigurationOptions()
241246
assert.Len(t, opts, 0)
247+
logger := core.NewLogger()
248+
assert.NoError(t, ch.Configure(map[string]interface{}{
249+
core.ConfigLogger: logger,
250+
}))
251+
assert.Equal(t, logger, ch.l)
242252
}
243253

244254
func TestUASTChangesRegistration(t *testing.T) {
@@ -369,6 +379,11 @@ func TestUASTChangesSaverMeta(t *testing.T) {
369379
assert.Len(t, opts, 1)
370380
assert.Equal(t, opts[0].Name, ConfigUASTChangesSaverOutputPath)
371381
assert.Equal(t, chs.Flag(), "dump-uast-changes")
382+
logger := core.NewLogger()
383+
assert.NoError(t, chs.Configure(map[string]interface{}{
384+
core.ConfigLogger: logger,
385+
}))
386+
assert.Equal(t, logger, chs.l)
372387
}
373388

374389
func TestUASTChangesSaverConfiguration(t *testing.T) {

leaves/burndown_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,11 @@ func TestBurndownMeta(t *testing.T) {
5757
}
5858
assert.Len(t, opts, matches)
5959
assert.Equal(t, bd.Flag(), "burndown")
60+
logger := core.NewLogger()
61+
assert.NoError(t, bd.Configure(map[string]interface{}{
62+
core.ConfigLogger: logger,
63+
}))
64+
assert.Equal(t, logger, bd.l)
6065
}
6166

6267
func TestBurndownConfigure(t *testing.T) {

leaves/comment_sentiment_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ func TestCommentSentimentMeta(t *testing.T) {
5555
}
5656
assert.Len(t, opts, matches)
5757
assert.Equal(t, sent.Flag(), "sentiment")
58+
logger := core.NewLogger()
59+
assert.NoError(t, sent.Configure(map[string]interface{}{
60+
core.ConfigLogger: logger,
61+
}))
62+
assert.Equal(t, logger, sent.l)
5863
}
5964

6065
func TestCommentSentimentConfigure(t *testing.T) {

leaves/commits_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ func TestCommitsMeta(t *testing.T) {
2828
opts := ca.ListConfigurationOptions()
2929
assert.Len(t, opts, 0)
3030
assert.Equal(t, ca.Flag(), "commits-stat")
31+
logger := core.NewLogger()
32+
assert.NoError(t, ca.Configure(map[string]interface{}{
33+
core.ConfigLogger: logger,
34+
}))
35+
assert.Equal(t, logger, ca.l)
3136
}
3237

3338
func TestCommitsRegistration(t *testing.T) {

leaves/couples_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ func TestCouplesMeta(t *testing.T) {
3333
assert.Equal(t, c.Requires()[1], plumbing.DependencyTreeChanges)
3434
assert.Equal(t, c.Flag(), "couples")
3535
assert.Len(t, c.ListConfigurationOptions(), 0)
36+
logger := core.NewLogger()
37+
assert.NoError(t, c.Configure(map[string]interface{}{
38+
core.ConfigLogger: logger,
39+
}))
40+
assert.Equal(t, logger, c.l)
3641
}
3742

3843
func TestCouplesRegistration(t *testing.T) {

leaves/devs_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ func TestDevsMeta(t *testing.T) {
4141
assert.Equal(t, d.ListConfigurationOptions()[0].Type, core.BoolConfigurationOption)
4242
assert.Equal(t, d.ListConfigurationOptions()[0].Default, false)
4343
assert.True(t, len(d.Description()) > 0)
44+
logger := core.NewLogger()
45+
assert.NoError(t, d.Configure(map[string]interface{}{
46+
core.ConfigLogger: logger,
47+
}))
48+
assert.Equal(t, logger, d.l)
4449
}
4550

4651
func TestDevsRegistration(t *testing.T) {

leaves/file_history_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,11 @@ func TestFileHistoryMeta(t *testing.T) {
3232
assert.Equal(t, fh.Requires()[2], identity.DependencyAuthor)
3333
assert.Len(t, fh.ListConfigurationOptions(), 0)
3434
assert.Nil(t, fh.Configure(nil))
35+
logger := core.NewLogger()
36+
assert.NoError(t, fh.Configure(map[string]interface{}{
37+
core.ConfigLogger: logger,
38+
}))
39+
assert.Equal(t, logger, fh.l)
3540
}
3641

3742
func TestFileHistoryRegistration(t *testing.T) {

leaves/research/typos_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,11 @@ func TestTyposDatasetMeta(t *testing.T) {
3434
assert.Equal(t, opts[0].Name, ConfigTyposDatasetMaximumAllowedDistance)
3535
assert.Equal(t, opts[0].Type, core.IntConfigurationOption)
3636
assert.Equal(t, tdb.Flag(), "typos-dataset")
37+
logger := core.NewLogger()
38+
assert.NoError(t, tdb.Configure(map[string]interface{}{
39+
core.ConfigLogger: logger,
40+
}))
41+
assert.Equal(t, logger, tdb.l)
3742
}
3843

3944
func TestTyposDatasetRegistration(t *testing.T) {

0 commit comments

Comments
 (0)