github.com/chenfeining/golangci-lint@v1.0.2-0.20230730162517-14c6c67868df/test/fix_test.go (about) 1 package test 2 3 import ( 4 "os" 5 "os/exec" 6 "path/filepath" 7 "testing" 8 9 "github.com/stretchr/testify/require" 10 11 "github.com/chenfeining/golangci-lint/test/testshared" 12 ) 13 14 // value: "1" 15 const envKeepTempFiles = "GL_KEEP_TEMP_FILES" 16 17 func setupTestFix(t *testing.T) []string { 18 t.Helper() 19 20 testshared.SkipOnWindows(t) 21 22 tmpDir := filepath.Join(testdataDir, "fix.tmp") 23 _ = os.RemoveAll(tmpDir) // cleanup previous runs 24 25 if os.Getenv(envKeepTempFiles) == "1" { 26 t.Logf("Temp dir for fix test: %s", tmpDir) 27 } else { 28 t.Cleanup(func() { _ = os.RemoveAll(tmpDir) }) 29 } 30 31 sourcesDir := filepath.Join(testdataDir, "fix") 32 33 err := exec.Command("cp", "-R", sourcesDir, tmpDir).Run() 34 require.NoError(t, err) 35 36 testshared.InstallGolangciLint(t) 37 38 return findSources(t, tmpDir, "in", "*.go") 39 } 40 41 func TestFix(t *testing.T) { 42 sources := setupTestFix(t) 43 44 for _, input := range sources { 45 input := input 46 t.Run(filepath.Base(input), func(t *testing.T) { 47 t.Parallel() 48 49 rc := testshared.ParseTestDirectives(t, input) 50 if rc == nil { 51 t.Logf("Skipped: %s", input) 52 return 53 } 54 55 testshared.NewRunnerBuilder(t). 56 WithArgs("--disable-all", 57 "--print-issued-lines=false", 58 "--print-linter-name=false", 59 "--out-format=line-number", 60 "--fix"). 61 WithRunContext(rc). 62 WithTargetPath(input). 63 Runner(). 64 Run(). 65 ExpectExitCode(rc.ExitCode) 66 67 output, err := os.ReadFile(input) 68 require.NoError(t, err) 69 70 expectedOutput, err := os.ReadFile(filepath.Join(testdataDir, "fix", "out", filepath.Base(input))) 71 require.NoError(t, err) 72 73 require.Equal(t, string(expectedOutput), string(output)) 74 }) 75 } 76 } 77 78 func TestFix_pathPrefix(t *testing.T) { 79 sources := setupTestFix(t) 80 81 for _, input := range sources { 82 input := input 83 t.Run(filepath.Base(input), func(t *testing.T) { 84 t.Parallel() 85 86 rc := testshared.ParseTestDirectives(t, input) 87 if rc == nil { 88 t.Logf("Skipped: %s", input) 89 return 90 } 91 92 testshared.NewRunnerBuilder(t). 93 WithArgs("--disable-all", 94 "--print-issued-lines=false", 95 "--print-linter-name=false", 96 "--out-format=line-number", 97 "--fix", 98 "--path-prefix=foobar/"). 99 WithRunContext(rc). 100 WithTargetPath(input). 101 Runner(). 102 Run(). 103 ExpectExitCode(rc.ExitCode) 104 105 output, err := os.ReadFile(input) 106 require.NoError(t, err) 107 108 expectedOutput, err := os.ReadFile(filepath.Join(testdataDir, "fix", "out", filepath.Base(input))) 109 require.NoError(t, err) 110 111 require.Equal(t, string(expectedOutput), string(output)) 112 }) 113 } 114 }