github.com/songrgg/gometalinter@v2.0.6-0.20180425200507-2cbec6168e84+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  }