github.com/thrasher-corp/golangci-lint@v1.17.3/test/fix_test.go (about) 1 package test 2 3 import ( 4 "io/ioutil" 5 "os" 6 "os/exec" 7 "path/filepath" 8 "testing" 9 10 assert "github.com/stretchr/testify/require" 11 yaml "gopkg.in/yaml.v2" 12 13 "github.com/golangci/golangci-lint/test/testshared" 14 ) 15 16 func TestFix(t *testing.T) { 17 findSources := func(pathPatterns ...string) []string { 18 sources, err := filepath.Glob(filepath.Join(pathPatterns...)) 19 assert.NoError(t, err) 20 assert.NotEmpty(t, sources) 21 return sources 22 } 23 24 tmpDir := filepath.Join(testdataDir, "fix.tmp") 25 os.RemoveAll(tmpDir) // cleanup after previous runs 26 27 if os.Getenv("GL_KEEP_TEMP_FILES") != "1" { 28 defer os.RemoveAll(tmpDir) 29 } 30 31 err := exec.Command("cp", "-R", filepath.Join(testdataDir, "fix"), tmpDir).Run() 32 assert.NoError(t, err) 33 34 inputs := findSources(tmpDir, "in", "*.go") 35 for _, input := range inputs { 36 input := input 37 t.Run(filepath.Base(input), func(t *testing.T) { 38 args := []string{ 39 "--disable-all", "--print-issued-lines=false", "--print-linter-name=false", "--out-format=line-number", 40 "--fix", 41 input, 42 } 43 rc := extractRunContextFromComments(t, input) 44 args = append(args, rc.args...) 45 46 cfg, err := yaml.Marshal(rc.config) 47 assert.NoError(t, err) 48 49 testshared.NewLintRunner(t).RunWithYamlConfig(string(cfg), args...) 50 output, err := ioutil.ReadFile(input) 51 assert.NoError(t, err) 52 53 expectedOutput, err := ioutil.ReadFile(filepath.Join(testdataDir, "fix", "out", filepath.Base(input))) 54 assert.NoError(t, err) 55 56 assert.Equal(t, string(expectedOutput), string(output)) 57 }) 58 } 59 }