Add tests to cover the import tracker from file

Signed-off-by: Cosmin Cojocar <cosmin.cojocar@gmx.ch>
This commit is contained in:
Cosmin Cojocar 2019-04-29 18:32:39 +02:00 committed by Cosmin Cojocar
parent 5ef2beeaa6
commit 25b5a1a1ce
3 changed files with 86 additions and 2 deletions

View file

@ -9,7 +9,7 @@ import (
"github.com/securego/gosec/testutils" "github.com/securego/gosec/testutils"
) )
var _ = Describe("call list", func() { var _ = Describe("Call List", func() {
var ( var (
calls gosec.CallList calls gosec.CallList
) )

77
import_tracker_test.go Normal file
View file

@ -0,0 +1,77 @@
package gosec_test
import (
"github.com/securego/gosec"
"github.com/securego/gosec/testutils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
var _ = Describe("Import Tracker", func() {
Context("when tracking a file", func() {
It("should parse the imports from file", func() {
tracker := gosec.NewImportTracker()
pkg := testutils.NewTestPackage()
defer pkg.Close()
pkg.AddFile("foo.go", `
package foo
import "fmt"
func foo() {
fmt.Println()
}
`)
err := pkg.Build()
Expect(err).ShouldNot(HaveOccurred())
pkgs := pkg.Pkgs()
Expect(pkgs).Should(HaveLen(1))
files := pkgs[0].Syntax
Expect(files).Should(HaveLen(1))
tracker.TrackFile(files[0])
Expect(tracker.Imported).Should(Equal(map[string]string{"fmt": "fmt"}))
})
It("should parse the named imports from file", func() {
tracker := gosec.NewImportTracker()
pkg := testutils.NewTestPackage()
defer pkg.Close()
pkg.AddFile("foo.go", `
package foo
import fm "fmt"
func foo() {
fm.Println()
}
`)
err := pkg.Build()
Expect(err).ShouldNot(HaveOccurred())
pkgs := pkg.Pkgs()
Expect(pkgs).Should(HaveLen(1))
files := pkgs[0].Syntax
Expect(files).Should(HaveLen(1))
tracker.TrackFile(files[0])
Expect(tracker.Imported).Should(Equal(map[string]string{"fmt": "fmt"}))
})
It("should not parse the init imports from file", func() {
tracker := gosec.NewImportTracker()
pkg := testutils.NewTestPackage()
defer pkg.Close()
pkg.AddFile("foo.go", `
package foo
import (
"fmt"
_ "os"
)
func foo() {
fmt.Println()
}
`)
err := pkg.Build()
Expect(err).ShouldNot(HaveOccurred())
pkgs := pkg.Pkgs()
Expect(pkgs).Should(HaveLen(1))
files := pkgs[0].Syntax
Expect(files).Should(HaveLen(1))
tracker.TrackFile(files[1])
Expect(tracker.Imported).Should(Equal(map[string]string{"fmt": "fmt"}))
})
})
})

View file

@ -90,7 +90,6 @@ func (p *TestPackage) Build() error {
Tests: false, Tests: false,
} }
pkgs, err := packages.Load(conf, packageFiles...) pkgs, err := packages.Load(conf, packageFiles...)
if err != nil { if err != nil {
return err return err
} }
@ -140,3 +139,11 @@ func (p *TestPackage) Close() {
} }
} }
} }
// Pkgs returns the current built packages
func (p *TestPackage) Pkgs() []*packages.Package {
if p.build != nil {
return p.build.pkgs
}
return []*packages.Package{}
}