@@ -8,16 +8,27 @@ import (
8
8
"strings"
9
9
"testing"
10
10
11
- "github.com/spf13/viper"
12
11
"github.com/stretchr/testify/assert"
13
12
"github.com/stretchr/testify/require"
14
- "gopkg.in/yaml.v3"
15
13
14
+ "github.com/golangci/golangci-lint/pkg/commands/internal/migrate/fakeloader"
15
+ "github.com/golangci/golangci-lint/pkg/commands/internal/migrate/parser"
16
16
"github.com/golangci/golangci-lint/pkg/commands/internal/migrate/versionone"
17
- "github.com/golangci/golangci-lint/pkg/config"
18
- "github.com/golangci/golangci-lint/pkg/logutils"
19
17
)
20
18
19
+ type fakeFile struct {
20
+ bytes.Buffer
21
+ name string
22
+ }
23
+
24
+ func newFakeFile (name string ) * fakeFile {
25
+ return & fakeFile {name : name }
26
+ }
27
+
28
+ func (f * fakeFile ) Name () string {
29
+ return f .name
30
+ }
31
+
21
32
func TestToConfig (t * testing.T ) {
22
33
var testFiles []string
23
34
@@ -30,7 +41,7 @@ func TestToConfig(t *testing.T) {
30
41
return nil
31
42
}
32
43
33
- if strings .HasSuffix (path , ".golden.yml " ) {
44
+ if strings .Contains (path , ".golden." ) {
34
45
return nil
35
46
}
36
47
@@ -46,7 +57,7 @@ func TestToConfig(t *testing.T) {
46
57
t .Parallel ()
47
58
48
59
ext := filepath .Ext (fileIn )
49
- fileGolden := strings .TrimSuffix (fileIn , ext ) + ".golden.yml"
60
+ fileGolden := strings .TrimSuffix (fileIn , ext ) + ".golden" + ext
50
61
51
62
testFile (t , fileIn , fileGolden , false )
52
63
})
@@ -58,30 +69,33 @@ func testFile(t *testing.T, in, golden string, update bool) {
58
69
59
70
old := versionone .NewConfig ()
60
71
61
- options := config.LoaderOptions {Config : in }
62
-
63
72
// Fake load of the configuration.
64
73
// IMPORTANT: The default values from flags are not set.
65
- loader := config .NewBaseLoader (logutils .NewStderrLog ("skip" ), viper .New (), options , old , nil )
66
-
67
- err := loader .Load ()
74
+ err := fakeloader .Load (in , old )
68
75
require .NoError (t , err )
69
76
70
77
if update {
71
78
updateGolden (t , golden , old )
72
79
}
73
80
74
- expected , err := os .ReadFile (golden )
75
- require .NoError (t , err )
81
+ buf := newFakeFile ("test" + filepath .Ext (golden ))
76
82
77
- var buf bytes.Buffer
78
- encoder := yaml .NewEncoder (& buf )
79
- encoder .SetIndent (2 )
83
+ err = parser .Encode (ToConfig (old ), buf )
84
+ require .NoError (t , err )
80
85
81
- err = encoder . Encode ( ToConfig ( old ) )
86
+ expected , err := os . ReadFile ( golden )
82
87
require .NoError (t , err )
83
88
84
- assert .YAMLEq (t , string (expected ), buf .String ())
89
+ switch filepath .Ext (golden ) {
90
+ case ".yml" :
91
+ assert .YAMLEq (t , string (expected ), buf .String ())
92
+ case ".json" :
93
+ assert .JSONEq (t , string (expected ), buf .String ())
94
+ case ".toml" :
95
+ assert .Equal (t , string (expected ), buf .String ())
96
+ default :
97
+ require .Failf (t , "unsupported extension: %s" , golden )
98
+ }
85
99
}
86
100
87
101
func updateGolden (t * testing.T , golden string , old * versionone.Config ) {
@@ -94,9 +108,6 @@ func updateGolden(t *testing.T, golden string, old *versionone.Config) {
94
108
_ = fileOut .Close ()
95
109
}()
96
110
97
- encoder := yaml .NewEncoder (fileOut )
98
- encoder .SetIndent (2 )
99
-
100
- err = encoder .Encode (ToConfig (old ))
111
+ err = parser .Encode (ToConfig (old ), fileOut )
101
112
require .NoError (t , err )
102
113
}
0 commit comments