github.com/bhcleek/gometalinter@v2.0.6-0.20180316043659-b25b44d18fb6+incompatible/linters_test.go (about) 1 package main 2 3 import ( 4 "reflect" 5 "runtime" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 "github.com/stretchr/testify/require" 10 ) 11 12 func TestNewLinterWithCustomLinter(t *testing.T) { 13 config := LinterConfig{ 14 Command: "/usr/bin/custom", 15 Pattern: "path", 16 } 17 linter, err := NewLinter("thename", config) 18 require.NoError(t, err) 19 assert.Equal(t, functionName(partitionPathsAsDirectories), functionName(linter.LinterConfig.PartitionStrategy)) 20 assert.Equal(t, "(?m:path)", linter.regex.String()) 21 assert.Equal(t, "thename", linter.Name) 22 assert.Equal(t, config.Command, linter.Command) 23 } 24 25 func TestGetLinterByName(t *testing.T) { 26 config := LinterConfig{ 27 Command: "maligned", 28 Pattern: "path", 29 InstallFrom: "./install/path", 30 PartitionStrategy: partitionPathsAsDirectories, 31 IsFast: true, 32 } 33 overrideConfig := getLinterByName(config.Command, config) 34 assert.Equal(t, config.Command, overrideConfig.Command) 35 assert.Equal(t, config.Pattern, overrideConfig.Pattern) 36 assert.Equal(t, config.InstallFrom, overrideConfig.InstallFrom) 37 assert.Equal(t, functionName(config.PartitionStrategy), functionName(overrideConfig.PartitionStrategy)) 38 assert.Equal(t, config.IsFast, overrideConfig.IsFast) 39 } 40 41 func TestValidateLinters(t *testing.T) { 42 originalConfig := *config 43 defer func() { config = &originalConfig }() 44 45 config = &Config{ 46 Enable: []string{"_dummylinter_"}, 47 } 48 49 err := validateLinters(lintersFromConfig(config), config) 50 require.Error(t, err, "expected unknown linter error for _dummylinter_") 51 52 config = &Config{ 53 Enable: defaultEnabled(), 54 } 55 err = validateLinters(lintersFromConfig(config), config) 56 require.NoError(t, err) 57 } 58 59 func functionName(i interface{}) string { 60 return runtime.FuncForPC(reflect.ValueOf(i).Pointer()).Name() 61 }