github.com/azazeal/revive@v1.0.9/test/golint_test.go (about)

     1  package test
     2  
     3  import (
     4  	"flag"
     5  	"io/ioutil"
     6  	"path"
     7  	"regexp"
     8  	"testing"
     9  
    10  	"github.com/azazeal/revive/lint"
    11  	"github.com/azazeal/revive/rule"
    12  )
    13  
    14  var lintMatch = flag.String("lint.match", "", "restrict fixtures matches to this pattern")
    15  
    16  var rules = []lint.Rule{
    17  	&rule.VarDeclarationsRule{},
    18  	&rule.PackageCommentsRule{},
    19  	&rule.DotImportsRule{},
    20  	&rule.BlankImportsRule{},
    21  	&rule.ExportedRule{},
    22  	&rule.VarNamingRule{},
    23  	&rule.IndentErrorFlowRule{},
    24  	&rule.IfReturnRule{},
    25  	&rule.RangeRule{},
    26  	&rule.ErrorfRule{},
    27  	&rule.ErrorNamingRule{},
    28  	&rule.ErrorStringsRule{},
    29  	&rule.ReceiverNamingRule{},
    30  	&rule.IncrementDecrementRule{},
    31  	&rule.ErrorReturnRule{},
    32  	&rule.UnexportedReturnRule{},
    33  	&rule.TimeNamingRule{},
    34  	&rule.ContextKeysType{},
    35  	&rule.ContextAsArgumentRule{},
    36  }
    37  
    38  func TestAll(t *testing.T) {
    39  	baseDir := "../testdata/golint/"
    40  
    41  	rx, err := regexp.Compile(*lintMatch)
    42  	if err != nil {
    43  		t.Fatalf("Bad -lint.match value %q: %v", *lintMatch, err)
    44  	}
    45  
    46  	fis, err := ioutil.ReadDir(baseDir)
    47  	if err != nil {
    48  		t.Fatalf("ioutil.ReadDir: %v", err)
    49  	}
    50  	if len(fis) == 0 {
    51  		t.Fatalf("no files in %v", baseDir)
    52  	}
    53  	for _, fi := range fis {
    54  		if !rx.MatchString(fi.Name()) {
    55  			continue
    56  		}
    57  		t.Run(fi.Name(), func(t *testing.T) {
    58  			src, err := ioutil.ReadFile(path.Join(baseDir, fi.Name()))
    59  			if err != nil {
    60  				t.Fatalf("Failed reading %s: %v", fi.Name(), err)
    61  			}
    62  
    63  			if err := assertFailures(t, baseDir, fi, src, rules, map[string]lint.RuleConfig{}); err != nil {
    64  				t.Errorf("Linting %s: %v", fi.Name(), err)
    65  			}
    66  		})
    67  	}
    68  }