github.com/alecthomas/golangci-lint@v1.4.2-0.20180609094924-581a3564ff68/pkg/lint/load_test.go (about)

     1  package lint
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/golangci/golangci-lint/pkg/config"
     8  	"github.com/golangci/golangci-lint/pkg/fsutils"
     9  	"github.com/golangci/golangci-lint/pkg/lint/astcache"
    10  	"github.com/golangci/golangci-lint/pkg/lint/linter"
    11  	"github.com/stretchr/testify/assert"
    12  )
    13  
    14  func TestASTCacheLoading(t *testing.T) {
    15  	ctx := context.Background()
    16  	linters := []linter.Config{
    17  		linter.NewConfig(nil).WithFullImport(),
    18  	}
    19  
    20  	inputPaths := []string{"./...", "./", "./load.go", "load.go"}
    21  	for _, inputPath := range inputPaths {
    22  		paths, err := fsutils.GetPathsForAnalysis(ctx, []string{inputPath}, true, nil)
    23  		assert.NoError(t, err)
    24  		assert.NotEmpty(t, paths.Files)
    25  
    26  		prog, _, err := loadWholeAppIfNeeded(ctx, linters, &config.Run{
    27  			AnalyzeTests: true,
    28  		}, paths)
    29  		assert.NoError(t, err)
    30  
    31  		astCacheFromProg, err := astcache.LoadFromProgram(prog)
    32  		assert.NoError(t, err)
    33  
    34  		astCacheFromFiles := astcache.LoadFromFiles(paths.Files)
    35  
    36  		filesFromProg := astCacheFromProg.GetAllValidFiles()
    37  		filesFromFiles := astCacheFromFiles.GetAllValidFiles()
    38  		if len(filesFromProg) != len(filesFromFiles) {
    39  			t.Logf("files: %s", paths.Files)
    40  			t.Logf("from prog:")
    41  			for _, f := range filesFromProg {
    42  				t.Logf("%+v", *f)
    43  			}
    44  			t.Logf("from files:")
    45  			for _, f := range filesFromFiles {
    46  				t.Logf("%+v", *f)
    47  			}
    48  			t.Fatalf("lengths differ")
    49  		}
    50  
    51  		if len(filesFromProg) != len(paths.Files) {
    52  			t.Fatalf("filesFromProg differ from path.Files")
    53  		}
    54  	}
    55  }