@@ -13,6 +13,7 @@ import (
13
13
"golang.org/x/tools/gopls/internal/lsp/command"
14
14
"golang.org/x/tools/gopls/internal/lsp/protocol"
15
15
. "golang.org/x/tools/gopls/internal/lsp/regtest"
16
+ "golang.org/x/tools/gopls/internal/lsp/tests/compare"
16
17
"golang.org/x/tools/internal/testenv"
17
18
)
18
19
@@ -126,12 +127,12 @@ go 1.18
126
127
require golang.org/cmod v1.1.3
127
128
128
129
require (
129
- golang.org/amod v1.1.3 // indirect
130
+ golang.org/amod v1.0.0 // indirect
130
131
golang.org/bmod v0.5.0 // indirect
131
132
)
132
133
-- go.sum --
133
- golang.org/amod v1.1.3 h1:E9ohW9ayc6iCFrT/VNq8tCI4hgYM+tEbo8txbtbyS3o =
134
- golang.org/amod v1.1.3 /go.mod h1:yvny5/2OtYFomKt8ax+WJGvN6pfN1pqjGnn7DQLUi6E=
134
+ golang.org/amod v1.0.0 h1:EUQOI2m5NhQZijXZf8WimSnnWubaFNrrKUH/PopTN8k =
135
+ golang.org/amod v1.0.0 /go.mod h1:yvny5/2OtYFomKt8ax+WJGvN6pfN1pqjGnn7DQLUi6E=
135
136
golang.org/bmod v0.5.0 h1:0kt1EI53298Ta9w4RPEAzNUQjtDoHUA6cc0c7Rwxhlk=
136
137
golang.org/bmod v0.5.0/go.mod h1:f6o+OhF66nz/0BBc/sbCsshyPRKMSxZIlG50B/bsM4c=
137
138
golang.org/cmod v1.1.3 h1:PJ7rZFTk7xGAunBRDa0wDe7rZjZ9R/vr1S2QkVVCngQ=
@@ -188,16 +189,27 @@ func C1() I {
188
189
func C2() func() {
189
190
return bvuln.Vuln
190
191
}
191
- -- golang.org/amod@v1.1.3 /go.mod --
192
+ -- golang.org/amod@v1.0.0 /go.mod --
192
193
module golang.org/amod
193
194
194
195
go 1.14
195
- -- golang.org/amod@v1.1.3 /avuln/avuln.go --
196
+ -- golang.org/amod@v1.0.0 /avuln/avuln.go --
196
197
package avuln
197
198
198
199
type VulnData struct {}
199
200
func (v VulnData) Vuln1() {}
200
201
func (v VulnData) Vuln2() {}
202
+ -- golang.org/[email protected] /go.mod --
203
+ module golang.org/amod
204
+
205
+ go 1.14
206
+ -- golang.org/[email protected] /avuln/avuln.go --
207
+ package avuln
208
+
209
+ type VulnData struct {}
210
+ func (v VulnData) Vuln1() {}
211
+ func (v VulnData) Vuln2() {}
212
+
201
213
-- golang.org/[email protected] /go.mod --
202
214
module golang.org/bmod
203
215
@@ -234,13 +246,35 @@ func TestRunVulncheckExp(t *testing.T) {
234
246
},
235
247
).Run (t , workspace1 , func (t * testing.T , env * Env ) {
236
248
env .OpenFile ("go.mod" )
237
- env .ExecuteCodeLensCommand ("go.mod" , command .RunVulncheckExp )
249
+ env .ExecuteCodeLensCommand ("go.mod" , command .Tidy )
238
250
251
+ env .ExecuteCodeLensCommand ("go.mod" , command .RunVulncheckExp )
252
+ d := & protocol.PublishDiagnosticsParams {}
239
253
env .Await (
240
254
CompletedWork ("govulncheck" , 1 , true ),
241
255
ShownMessage ("Found" ),
242
- env .DiagnosticAtRegexpWithMessage ("go.mod" , `golang.org/amod` , "vuln in amod" ),
243
- env .DiagnosticAtRegexpWithMessage ("go.mod" , `golang.org/bmod` , "vuln in bmod" ),
256
+ OnceMet (
257
+ env .DiagnosticAtRegexpWithMessage ("go.mod" , `golang.org/amod` , "vuln in amod" ),
258
+ env .DiagnosticAtRegexpWithMessage ("go.mod" , `golang.org/bmod` , "vuln in bmod" ),
259
+ ReadDiagnostics ("go.mod" , d ),
260
+ ),
244
261
)
262
+
263
+ env .ApplyQuickFixes ("go.mod" , d .Diagnostics )
264
+ env .Await (env .DoneWithChangeWatchedFiles ())
265
+ wantGoMod := `module golang.org/entry
266
+
267
+ go 1.18
268
+
269
+ require golang.org/cmod v1.1.3
270
+
271
+ require (
272
+ golang.org/amod v1.0.4 // indirect
273
+ golang.org/bmod v0.5.0 // indirect
274
+ )
275
+ `
276
+ if got := env .Editor .BufferText ("go.mod" ); got != wantGoMod {
277
+ t .Fatalf ("go.mod vulncheck fix failed:\n %s" , compare .Text (wantGoMod , got ))
278
+ }
245
279
})
246
280
}
0 commit comments