golangci-lint/pkg/commands/run_test.go
2018-05-30 20:01:44 +03:00

55 lines
1.4 KiB
Go

package commands
import (
"context"
"testing"
"github.com/golangci/golangci-lint/pkg"
"github.com/golangci/golangci-lint/pkg/astcache"
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/fsutils"
"github.com/golangci/golangci-lint/pkg/golinters"
"github.com/stretchr/testify/assert"
)
func TestASTCacheLoading(t *testing.T) {
ctx := context.Background()
linters := []pkg.Linter{golinters.Errcheck{}}
inputPaths := []string{"./...", "./", "./run.go", "run.go"}
for _, inputPath := range inputPaths {
paths, err := fsutils.GetPathsForAnalysis(ctx, []string{inputPath}, true)
assert.NoError(t, err)
assert.NotEmpty(t, paths.Files)
prog, _, err := loadWholeAppIfNeeded(ctx, linters, &config.Run{
AnalyzeTests: true,
}, paths)
assert.NoError(t, err)
astCacheFromProg, err := astcache.LoadFromProgram(prog)
assert.NoError(t, err)
astCacheFromFiles := astcache.LoadFromFiles(paths.Files)
filesFromProg := astCacheFromProg.GetAllValidFiles()
filesFromFiles := astCacheFromFiles.GetAllValidFiles()
if len(filesFromProg) != len(filesFromFiles) {
t.Logf("files: %s", paths.Files)
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(paths.Files) {
t.Fatalf("filesFromProg differ from path.Files")
}
}
}