github.com/asbovelw/gometalinter@v3.0.1-0.20200515093514-37c0f45b17f4+incompatible/config_test.go (about)

     1  package main
     2  
     3  import (
     4  	"encoding/json"
     5  	"os"
     6  	"path/filepath"
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  	"github.com/stretchr/testify/require"
    11  )
    12  
    13  func TestLinterConfigUnmarshalJSON(t *testing.T) {
    14  	source := `{
    15  		"Command": "/bin/custom",
    16  		"PartitionStrategy": "directories"
    17  	}`
    18  	var config StringOrLinterConfig
    19  	err := json.Unmarshal([]byte(source), &config)
    20  	require.NoError(t, err)
    21  	assert.Equal(t, "/bin/custom", config.Command)
    22  	assert.Equal(t, functionName(partitionPathsAsDirectories), functionName(config.PartitionStrategy))
    23  }
    24  
    25  func TestFindDefaultConfigFile(t *testing.T) {
    26  	tmpdir, cleanup := setupTempDir(t)
    27  	defer cleanup()
    28  
    29  	mkDir(t, tmpdir, "contains")
    30  	mkDir(t, tmpdir, "contains", "foo")
    31  	mkDir(t, tmpdir, "contains", "foo", "bar")
    32  	mkDir(t, tmpdir, "contains", "double")
    33  	mkDir(t, tmpdir, "lacks")
    34  
    35  	mkFile(t, filepath.Join(tmpdir, "contains"), defaultConfigPath, "{}")
    36  	mkFile(t, filepath.Join(tmpdir, "contains", "double"), defaultConfigPath, "{}")
    37  
    38  	var testcases = []struct {
    39  		dir      string
    40  		expected string
    41  		found    bool
    42  	}{
    43  		{
    44  			dir:      tmpdir,
    45  			expected: "",
    46  			found:    false,
    47  		},
    48  		{
    49  			dir:      filepath.Join(tmpdir, "contains"),
    50  			expected: filepath.Join(tmpdir, "contains", defaultConfigPath),
    51  			found:    true,
    52  		},
    53  		{
    54  			dir:      filepath.Join(tmpdir, "contains", "foo"),
    55  			expected: filepath.Join(tmpdir, "contains", defaultConfigPath),
    56  			found:    true,
    57  		},
    58  		{
    59  			dir:      filepath.Join(tmpdir, "contains", "foo", "bar"),
    60  			expected: filepath.Join(tmpdir, "contains", defaultConfigPath),
    61  			found:    true,
    62  		},
    63  		{
    64  			dir:      filepath.Join(tmpdir, "contains", "double"),
    65  			expected: filepath.Join(tmpdir, "contains", "double", defaultConfigPath),
    66  			found:    true,
    67  		},
    68  		{
    69  			dir:      filepath.Join(tmpdir, "lacks"),
    70  			expected: "",
    71  			found:    false,
    72  		},
    73  	}
    74  
    75  	for _, testcase := range testcases {
    76  		require.NoError(t, os.Chdir(testcase.dir))
    77  		configFile, found, err := findDefaultConfigFile()
    78  		assert.Equal(t, testcase.expected, configFile)
    79  		assert.Equal(t, testcase.found, found)
    80  		assert.NoError(t, err)
    81  	}
    82  }