From 625718d2943bc4e3769cd212c7046c342b9e5700 Mon Sep 17 00:00:00 2001 From: Cosmin Cojocar Date: Tue, 30 Apr 2019 12:17:44 +0200 Subject: [PATCH] Refactor the test for Go build errors Signed-off-by: Cosmin Cojocar --- analyzer.go | 2 +- analyzer_test.go | 25 ++++++++----------------- 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/analyzer.go b/analyzer.go index b0bcbf9..48ea1c3 100644 --- a/analyzer.go +++ b/analyzer.go @@ -199,7 +199,7 @@ func (gosec *Analyzer) parseErrors(pkg *packages.Package) error { var err error var line, column int var errorMsg string - if len(infoErr) == 4 { + if len(infoErr) > 3 { if line, err = strconv.Atoi(infoErr[1]); err != nil { return fmt.Errorf("parsing line: %v", err) } diff --git a/analyzer_test.go b/analyzer_test.go index 7d6ba9b..e8fb356 100644 --- a/analyzer_test.go +++ b/analyzer_test.go @@ -99,8 +99,6 @@ var _ = Describe("Analyzer", func() { }) It("should find errors when nosec is not in use", func() { - - // Rule for MD5 weak crypto usage sample := testutils.SampleCodeG401[0] source := sample.Code[0] analyzer.LoadRules(rules.Generate(rules.NewRuleFilter(false, "G401")).Builders()) @@ -117,7 +115,7 @@ var _ = Describe("Analyzer", func() { }) - It("should report for Golang errors and invalid files", func() { + It("should report Go build errors and invalid files", func() { analyzer.LoadRules(rules.Generate().Builders()) pkg := testutils.NewTestPackage() defer pkg.Close() @@ -129,22 +127,17 @@ var _ = Describe("Analyzer", func() { Expect(err).ShouldNot(HaveOccurred()) err = analyzer.Process(buildTags, pkg.Path) Expect(err).ShouldNot(HaveOccurred()) - _, _, golangErrors := analyzer.Report() - keys := make([]string, len(golangErrors)) - i := 0 - for key := range golangErrors { - keys[i] = key - i++ + _, _, errors := analyzer.Report() + Expect(len(errors)).To(Equal(1)) + for _, ferr := range errors { + Expect(len(ferr)).To(Equal(1)) + Expect(ferr[0].Line).To(Equal(4)) + Expect(ferr[0].Column).To(Equal(5)) + Expect(ferr[0].Err).Should(MatchRegexp(`expected declaration, found '}'`)) } - fileErr := golangErrors[keys[0]] - Expect(len(fileErr)).To(Equal(1)) - Expect(fileErr[0].Line).To(Equal(4)) - Expect(fileErr[0].Column).To(Equal(5)) - Expect(fileErr[0].Err).Should(MatchRegexp(`expected declaration, found '}'`)) }) It("should not report errors when a nosec comment is present", func() { - // Rule for MD5 weak crypto usage sample := testutils.SampleCodeG401[0] source := sample.Code[0] analyzer.LoadRules(rules.Generate(rules.NewRuleFilter(false, "G401")).Builders()) @@ -180,7 +173,6 @@ var _ = Describe("Analyzer", func() { }) It("should report errors when an exclude comment is present for a different rule", func() { - // Rule for MD5 weak crypto usage sample := testutils.SampleCodeG401[0] source := sample.Code[0] analyzer.LoadRules(rules.Generate(rules.NewRuleFilter(false, "G401")).Builders()) @@ -198,7 +190,6 @@ var _ = Describe("Analyzer", func() { }) It("should not report errors when an exclude comment is present for multiple rules, including the correct rule", func() { - // Rule for MD5 weak crypto usage sample := testutils.SampleCodeG401[0] source := sample.Code[0] analyzer.LoadRules(rules.Generate(rules.NewRuleFilter(false, "G401")).Builders())