@@ -14,6 +14,7 @@ use crate::domain::scanresult::severity::Severity;
1414use crate :: domain:: scanresult:: vulnerability:: Vulnerability ;
1515use chrono:: { DateTime , NaiveDate , Utc } ;
1616use itertools:: Itertools ;
17+ use semver:: Version ;
1718use std:: collections:: HashMap ;
1819use std:: sync:: Arc ;
1920
@@ -109,14 +110,14 @@ impl ScanResult {
109110 & mut self ,
110111 package_type : PackageType ,
111112 name : String ,
112- version : String ,
113+ version : Version ,
113114 path : String ,
114115 found_in_layer : Arc < Layer > ,
115116 ) -> Arc < Package > {
116117 let a_package = Arc :: new ( Package :: new (
117118 package_type,
118119 name. clone ( ) ,
119- version. clone ( ) ,
120+ version,
120121 path. clone ( ) ,
121122 found_in_layer. clone ( ) ,
122123 ) ) ;
@@ -140,7 +141,7 @@ impl ScanResult {
140141 disclosure_date : NaiveDate ,
141142 solution_date : Option < NaiveDate > ,
142143 exploitable : bool ,
143- fix_version : Option < String > ,
144+ fix_version : Option < Version > ,
144145 ) -> Arc < Vulnerability > {
145146 self . vulnerabilities
146147 . entry ( cve. clone ( ) )
@@ -313,7 +314,7 @@ mod tests {
313314 let package = scan_result. add_package (
314315 PackageType :: Os ,
315316 "musl" . to_string ( ) ,
316- "1.2.3" . to_string ( ) ,
317+ Version :: parse ( "1.2.3" ) . unwrap ( ) ,
317318 "/lib/ld-musl-x86_64.so.1" . to_string ( ) ,
318319 layer. clone ( ) ,
319320 ) ;
@@ -336,7 +337,7 @@ mod tests {
336337 Utc :: now ( ) . naive_utc ( ) . date ( ) ,
337338 None ,
338339 false ,
339- Some ( "1.2.4" . to_string ( ) ) ,
340+ Some ( Version :: parse ( "1.2.4" ) . unwrap ( ) ) ,
340341 ) ;
341342
342343 assert_eq ! ( scan_result. vulnerabilities( ) . len( ) , 1 ) ;
@@ -357,7 +358,7 @@ mod tests {
357358 let package = scan_result. add_package (
358359 PackageType :: Os ,
359360 "musl" . to_string ( ) ,
360- "1.2.3" . to_string ( ) ,
361+ Version :: parse ( "1.2.3" ) . unwrap ( ) ,
361362 "/lib/ld-musl-x86_64.so.1" . to_string ( ) ,
362363 layer. clone ( ) ,
363364 ) ;
@@ -367,7 +368,7 @@ mod tests {
367368 Utc :: now ( ) . naive_utc ( ) . date ( ) ,
368369 None ,
369370 false ,
370- Some ( "1.2.4" . to_string ( ) ) ,
371+ Some ( Version :: parse ( "1.2.4" ) . unwrap ( ) ) ,
371372 ) ;
372373
373374 package. add_vulnerability_found ( vuln. clone ( ) ) ;
@@ -462,7 +463,7 @@ mod tests {
462463 Utc :: now ( ) . naive_utc ( ) . date ( ) ,
463464 None ,
464465 false ,
465- Some ( "1.2.4" . to_string ( ) ) ,
466+ Some ( Version :: parse ( "1.2.4" ) . unwrap ( ) ) ,
466467 ) ;
467468
468469 vuln. add_accepted_risk ( risk. clone ( ) ) ;
@@ -488,7 +489,7 @@ mod tests {
488489 let package = scan_result. add_package (
489490 PackageType :: Os ,
490491 "musl" . to_string ( ) ,
491- "1.2.3" . to_string ( ) ,
492+ Version :: parse ( "1.2.3" ) . unwrap ( ) ,
492493 "/lib/ld-musl-x86_64.so.1" . to_string ( ) ,
493494 layer. clone ( ) ,
494495 ) ;
@@ -571,13 +572,13 @@ mod tests {
571572 let package = scan_result. add_package (
572573 PackageType :: Os ,
573574 "musl" . to_string ( ) ,
574- "1.2.3" . to_string ( ) ,
575+ Version :: parse ( "1.2.3" ) . unwrap ( ) ,
575576 "/path" . to_string ( ) ,
576577 layer. clone ( ) ,
577578 ) ;
578579 assert_eq ! ( package. package_type( ) , & PackageType :: Os ) ;
579580 assert_eq ! ( package. name( ) , "musl" ) ;
580- assert_eq ! ( package. version( ) , "1.2.3" ) ;
581+ assert_eq ! ( package. version( ) , & Version :: parse ( "1.2.3" ) . unwrap ( ) ) ;
581582 assert_eq ! ( package. path( ) , "/path" ) ;
582583 assert ! ( format!( "{:?}" , package) . contains( "musl" ) ) ;
583584 assert_eq ! ( package. clone( ) , package) ;
@@ -589,15 +590,15 @@ mod tests {
589590 now. naive_utc ( ) . date ( ) ,
590591 Some ( now. naive_utc ( ) . date ( ) ) ,
591592 true ,
592- Some ( "1.2.4" . to_string ( ) ) ,
593+ Some ( Version :: parse ( "1.2.4" ) . unwrap ( ) ) ,
593594 ) ;
594595 assert_eq ! ( vuln. cve( ) , "CVE-1" ) ;
595596 assert_eq ! ( vuln. severity( ) , Severity :: High ) ;
596597 assert_eq ! ( vuln. disclosure_date( ) , now. naive_utc( ) . date( ) ) ;
597598 assert_eq ! ( vuln. solution_date( ) , Some ( now. naive_utc( ) . date( ) ) ) ;
598599 assert ! ( vuln. exploitable( ) ) ;
599600 assert ! ( vuln. fixable( ) ) ;
600- assert_eq ! ( vuln. fix_version( ) , Some ( "1.2.4" ) ) ;
601+ assert_eq ! ( vuln. fix_version( ) , Some ( & Version :: parse ( "1.2.4" ) . unwrap ( ) ) ) ;
601602 assert ! ( format!( "{:?}" , vuln) . contains( "CVE-1" ) ) ;
602603
603604 // AcceptedRisk
@@ -672,14 +673,14 @@ mod tests {
672673 let pkg = scan_result. add_package (
673674 PackageType :: Os ,
674675 "pkg" . to_string ( ) ,
675- "1.0" . to_string ( ) ,
676+ Version :: parse ( "1.0.0" ) . unwrap ( ) ,
676677 "/path" . to_string ( ) ,
677678 layer. clone ( ) ,
678679 ) ;
679680 let pkg2 = scan_result. add_package (
680681 PackageType :: Os ,
681682 "pkg" . to_string ( ) ,
682- "1.0" . to_string ( ) ,
683+ Version :: parse ( "1.0.0" ) . unwrap ( ) ,
683684 "/path" . to_string ( ) ,
684685 layer. clone ( ) ,
685686 ) ;
0 commit comments