github.com/gwaycc/gometalinter@v3.0.0+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 }