golangci-lint/pkg/lint/load_test.go
Denis Isaev a6b91ccc77 Fix #124: support unparam linter
1. Support unparam linter and fix found issues
2. Replace forked mvdan.cc/lint and mvdan.cc/interfacer with the
upstream ones
3. Minimize forked megacheck: move the most of it's code to this repo
4. Use golang.org/x/tools/go/ssa import path instead of custom fork
paths
5. In golang.org/x/tools/go/{ssa,callgraph} use changed code from
honnef.co/go/tools
6. Add megacheck.check-unexported option: it found some issues in
the repo, fixed them all
2018-06-30 12:24:07 +03:00

67 lines
1.7 KiB
Go

package lint
import (
"testing"
"github.com/golangci/golangci-lint/pkg/golinters"
"github.com/golangci/golangci-lint/pkg/logutils"
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/lint/astcache"
"github.com/golangci/golangci-lint/pkg/lint/linter"
"github.com/golangci/golangci-lint/pkg/packages"
"github.com/stretchr/testify/assert"
)
func TestASTCacheLoading(t *testing.T) {
linters := []linter.Config{
linter.NewConfig(golinters.Errcheck{}).WithFullImport(),
}
inputPaths := []string{"./...", "./", "./load.go", "load.go"}
log := logutils.NewStderrLog("")
for _, inputPath := range inputPaths {
r, err := packages.NewResolver(nil, nil, log)
assert.NoError(t, err)
pkgProg, err := r.Resolve(inputPath)
assert.NoError(t, err)
assert.NoError(t, err)
assert.NotEmpty(t, pkgProg.Files(true))
cfg := &config.Config{
Run: config.Run{
AnalyzeTests: true,
},
}
prog, _, err := loadWholeAppIfNeeded(linters, cfg, pkgProg, logutils.NewStderrLog(""))
assert.NoError(t, err)
astCacheFromProg, err := astcache.LoadFromProgram(prog, log)
assert.NoError(t, err)
astCacheFromFiles, err := astcache.LoadFromFiles(pkgProg.Files(true), log)
assert.NoError(t, err)
filesFromProg := astCacheFromProg.GetAllValidFiles()
filesFromFiles := astCacheFromFiles.GetAllValidFiles()
if len(filesFromProg) != len(filesFromFiles) {
t.Logf("files: %s", pkgProg.Files(true))
t.Logf("from prog:")
for _, f := range filesFromProg {
t.Logf("%+v", *f)
}
t.Logf("from files:")
for _, f := range filesFromFiles {
t.Logf("%+v", *f)
}
t.Fatalf("lengths differ")
}
if len(filesFromProg) != len(pkgProg.Files(true)) {
t.Fatalf("filesFromProg differ from path.Files")
}
}
}