@@ -318,30 +318,57 @@ func TestCalculateDiagnostics_IgnoresSpecifics(t *testing.T) {
318
318
319
319
func TestGetHovers (t * testing.T ) {
320
320
testCases := []struct {
321
- image string
322
- value string
321
+ image string
322
+ result * protocol. Hover
323
323
}{
324
324
{
325
325
image : "alpine:3.16.1" ,
326
- value : "Current image vulnerabilities: 1C 3H 9M 0L \r \n \r \n Recommended tags:\n \n <table>\n <tr><td><code>3.21.3</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.20.6</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.18.12</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
326
+ result : & protocol.Hover {
327
+ Contents : protocol.MarkupContent {
328
+ Kind : protocol .MarkupKindMarkdown ,
329
+ Value : "Current image vulnerabilities: 1C 3H 9M 0L \r \n \r \n Recommended tags:\n \n <table>\n <tr><td><code>3.21.3</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.20.6</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.18.12</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
330
+ },
331
+ },
327
332
},
328
333
}
329
334
335
+ u := "file:///tmp/Dockerfile"
330
336
s := NewService ()
331
337
for _ , tc := range testCases {
332
338
t .Run (tc .image , func (t * testing.T ) {
333
- hover , err := s .Hover (context .Background (), "file:///tmp/Dockerfile" , tc .image )
339
+ hover , err := s .Hover (context .Background (), u , tc .image )
334
340
if os .Getenv ("DOCKER_NETWORK_NONE" ) == "true" {
335
341
var dns * net.DNSError
336
342
require .True (t , errors .As (err , & dns ))
337
343
return
338
344
}
339
345
340
346
require .Nil (t , err )
341
- markupContent , ok := hover .Contents .(protocol.MarkupContent )
342
- require .True (t , ok )
343
- require .Equal (t , protocol .MarkupKindMarkdown , markupContent .Kind )
344
- require .Equal (t , tc .value , markupContent .Value )
347
+ require .Equal (t , tc .result , hover )
348
+ })
349
+ }
350
+
351
+ for _ , tc := range testCases {
352
+ t .Run (tc .image , func (t * testing.T ) {
353
+ defer configuration .Remove (u )
354
+ configuration .Store (u , configuration.Configuration {Experimental : configuration.Experimental {
355
+ VulnerabilityScanning : false ,
356
+ Scout : configuration.Scout {
357
+ CriticalHighVulnerabilities : true ,
358
+ NotPinnedDigest : true ,
359
+ RecommendedTag : true ,
360
+ Vulnerabilites : true ,
361
+ },
362
+ }})
363
+ hover , err := s .Hover (context .Background (), u , tc .image )
364
+ if os .Getenv ("DOCKER_NETWORK_NONE" ) == "true" {
365
+ var dns * net.DNSError
366
+ require .True (t , errors .As (err , & dns ))
367
+ return
368
+ }
369
+
370
+ require .Nil (t , err )
371
+ require .Nil (t , hover )
345
372
})
346
373
}
347
374
}
@@ -350,83 +377,140 @@ func TestGetHovers_IgnoresSpecifics(t *testing.T) {
350
377
testCases := []struct {
351
378
name string
352
379
image string
353
- value string
354
380
config configuration.Scout
381
+ result * protocol.Hover
355
382
}{
356
383
{
357
384
name : "alpine:3.16.1 (all)" ,
358
385
image : "alpine:3.16.1" ,
359
- value : "Current image vulnerabilities: 1C 3H 9M 0L \r \n \r \n Recommended tags:\n \n <table>\n <tr><td><code>3.21.3</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.20.6</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.18.12</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
360
386
config : configuration.Scout {
361
387
CriticalHighVulnerabilities : true ,
362
388
NotPinnedDigest : true ,
363
389
RecommendedTag : true ,
364
390
Vulnerabilites : true ,
365
391
},
392
+ result : & protocol.Hover {
393
+ Contents : protocol.MarkupContent {
394
+ Kind : protocol .MarkupKindMarkdown ,
395
+ Value : "Current image vulnerabilities: 1C 3H 9M 0L \r \n \r \n Recommended tags:\n \n <table>\n <tr><td><code>3.21.3</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.20.6</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.18.12</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
396
+ },
397
+ },
366
398
},
367
399
{
368
400
name : "alpine:3.16.1 (CriticalHighVulnerabilities=false)" ,
369
401
image : "alpine:3.16.1" ,
370
- value : "Recommended tags:\n \n <table>\n <tr><td><code>3.21.3</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.20.6</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.18.12</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
371
402
config : configuration.Scout {
372
403
CriticalHighVulnerabilities : false ,
373
404
NotPinnedDigest : true ,
374
405
RecommendedTag : true ,
375
406
Vulnerabilites : true ,
376
407
},
408
+ result : & protocol.Hover {
409
+ Contents : protocol.MarkupContent {
410
+ Kind : protocol .MarkupKindMarkdown ,
411
+ Value : "Recommended tags:\n \n <table>\n <tr><td><code>3.21.3</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.20.6</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>3.18.12</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
412
+ },
413
+ },
377
414
},
378
415
{
379
416
name : "alpine:3.16.1 (RecommendedTag=false)" ,
380
417
image : "alpine:3.16.1" ,
381
- value : "Current image vulnerabilities: 1C 3H 9M 0L " ,
382
418
config : configuration.Scout {
383
419
CriticalHighVulnerabilities : true ,
384
420
NotPinnedDigest : true ,
385
421
RecommendedTag : false ,
386
422
Vulnerabilites : true ,
387
423
},
424
+ result : & protocol.Hover {
425
+ Contents : protocol.MarkupContent {
426
+ Kind : protocol .MarkupKindMarkdown ,
427
+ Value : "Current image vulnerabilities: 1C 3H 9M 0L " ,
428
+ },
429
+ },
388
430
},
389
431
{
390
432
name : "ubuntu:24.04 (all)" ,
391
433
image : "ubuntu:24.04" ,
392
- value : "Image vulnerabilities: 0C 0H 2M 6L \r \n \r \n Recommended tags:\n \n <table>\n <tr><td><code>25.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>25.04</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 3M</td><td align=\" right\" > 5L</td><td align=\" right\" ></td></tr>\n <tr><td><code>24.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 5M</td><td align=\" right\" > 6L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
393
434
config : configuration.Scout {
394
435
CriticalHighVulnerabilities : true ,
395
436
NotPinnedDigest : true ,
396
437
RecommendedTag : true ,
397
438
Vulnerabilites : true ,
398
439
},
440
+ result : & protocol.Hover {
441
+ Contents : protocol.MarkupContent {
442
+ Kind : protocol .MarkupKindMarkdown ,
443
+ Value : "Image vulnerabilities: 0C 0H 2M 6L \r \n \r \n Recommended tags:\n \n <table>\n <tr><td><code>25.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>25.04</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 3M</td><td align=\" right\" > 5L</td><td align=\" right\" ></td></tr>\n <tr><td><code>24.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 5M</td><td align=\" right\" > 6L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
444
+ },
445
+ },
399
446
},
400
447
{
401
448
name : "ubuntu:24.04 (Vulnerabilites=false)" ,
402
449
image : "ubuntu:24.04" ,
403
- value : "Recommended tags:\n \n <table>\n <tr><td><code>25.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>25.04</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 3M</td><td align=\" right\" > 5L</td><td align=\" right\" ></td></tr>\n <tr><td><code>24.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 5M</td><td align=\" right\" > 6L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
404
450
config : configuration.Scout {
405
451
CriticalHighVulnerabilities : true ,
406
452
NotPinnedDigest : true ,
407
453
RecommendedTag : true ,
408
454
Vulnerabilites : false ,
409
455
},
456
+ result : & protocol.Hover {
457
+ Contents : protocol.MarkupContent {
458
+ Kind : protocol .MarkupKindMarkdown ,
459
+ Value : "Recommended tags:\n \n <table>\n <tr><td><code>25.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 0M</td><td align=\" right\" > 0L</td><td align=\" right\" ></td></tr>\n <tr><td><code>25.04</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 3M</td><td align=\" right\" > 5L</td><td align=\" right\" ></td></tr>\n <tr><td><code>24.10</code></td><td align=\" right\" > 0C</td><td align=\" right\" > 0H</td><td align=\" right\" > 5M</td><td align=\" right\" > 6L</td><td align=\" right\" ></td></tr>\n </table>\n " ,
460
+ },
461
+ },
410
462
},
411
463
{
412
464
name : "ubuntu:24.04 (Vulnerabilites=false)" ,
413
465
image : "ubuntu:24.04" ,
414
- value : "Image vulnerabilities: 0C 0H 2M 6L " ,
415
466
config : configuration.Scout {
416
467
CriticalHighVulnerabilities : true ,
417
468
NotPinnedDigest : true ,
418
469
RecommendedTag : false ,
419
470
Vulnerabilites : true ,
420
471
},
472
+ result : & protocol.Hover {
473
+ Contents : protocol.MarkupContent {
474
+ Kind : protocol .MarkupKindMarkdown ,
475
+ Value : "Image vulnerabilities: 0C 0H 2M 6L " ,
476
+ },
477
+ },
421
478
},
422
479
}
423
480
481
+ u := "file:///tmp/Dockerfile"
424
482
s := NewService ()
425
483
for _ , tc := range testCases {
426
484
t .Run (tc .name , func (t * testing.T ) {
427
- u := "file:///tmp/Dockerfile"
428
485
defer configuration .Remove (u )
429
- configuration .Store (u , configuration.Configuration {Experimental : configuration.Experimental {Scout : tc .config }})
486
+ configuration .Store (u , configuration.Configuration {Experimental : configuration.Experimental {
487
+ VulnerabilityScanning : true ,
488
+ Scout : tc .config ,
489
+ }})
490
+ hover , err := s .Hover (context .Background (), u , tc .image )
491
+ if os .Getenv ("DOCKER_NETWORK_NONE" ) == "true" {
492
+ var dns * net.DNSError
493
+ require .True (t , errors .As (err , & dns ))
494
+ return
495
+ }
496
+
497
+ require .Nil (t , err )
498
+ require .Equal (t , tc .result , hover )
499
+ })
500
+ }
501
+
502
+ for _ , tc := range testCases {
503
+ t .Run (tc .image , func (t * testing.T ) {
504
+ defer configuration .Remove (u )
505
+ configuration .Store (u , configuration.Configuration {Experimental : configuration.Experimental {
506
+ VulnerabilityScanning : false ,
507
+ Scout : configuration.Scout {
508
+ CriticalHighVulnerabilities : true ,
509
+ NotPinnedDigest : true ,
510
+ RecommendedTag : true ,
511
+ Vulnerabilites : true ,
512
+ },
513
+ }})
430
514
hover , err := s .Hover (context .Background (), u , tc .image )
431
515
if os .Getenv ("DOCKER_NETWORK_NONE" ) == "true" {
432
516
var dns * net.DNSError
@@ -435,10 +519,7 @@ func TestGetHovers_IgnoresSpecifics(t *testing.T) {
435
519
}
436
520
437
521
require .Nil (t , err )
438
- markupContent , ok := hover .Contents .(protocol.MarkupContent )
439
- require .True (t , ok )
440
- require .Equal (t , protocol .MarkupKindMarkdown , markupContent .Kind )
441
- require .Equal (t , tc .value , markupContent .Value )
522
+ require .Nil (t , hover )
442
523
})
443
524
}
444
525
}
0 commit comments