
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
67 lines
1.7 KiB
Go
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")
|
|
}
|
|
}
|
|
}
|