@@ -84,7 +84,7 @@ pub enum DepInfoPathType {
84
84
/// | len of key | key bytes | value exists? | len of value | value bytes |
85
85
/// +------------+-----------+---------------+--------------+-------------+
86
86
/// ```
87
- #[ derive( Default ) ]
87
+ #[ derive( Default , Debug , PartialEq , Eq ) ]
88
88
pub struct EncodedDepInfo {
89
89
pub files : Vec < ( DepInfoPathType , PathBuf , Option < ( u64 , String ) > ) > ,
90
90
pub env : Vec < ( String , Option < String > ) > ,
@@ -614,3 +614,57 @@ pub enum InvalidChecksum {
614
614
#[ error( "expected a string with format \" algorithm=hex_checksum\" " ) ]
615
615
InvalidFormat ,
616
616
}
617
+
618
+ #[ cfg( test) ]
619
+ mod encoded_dep_info {
620
+ use super :: * ;
621
+
622
+ #[ track_caller]
623
+ fn gen_test ( checksum : bool ) {
624
+ let checksum = checksum. then_some ( ( 768 , "c01efc669f09508b55eced32d3c88702578a7c3e" . into ( ) ) ) ;
625
+ let lib_rs = (
626
+ DepInfoPathType :: TargetRootRelative ,
627
+ PathBuf :: from ( "src/lib.rs" ) ,
628
+ checksum. clone ( ) ,
629
+ ) ;
630
+
631
+ let depinfo = EncodedDepInfo {
632
+ files : vec ! [ lib_rs. clone( ) ] ,
633
+ env : Vec :: new ( ) ,
634
+ } ;
635
+ let data = depinfo. serialize ( ) . unwrap ( ) ;
636
+ assert_eq ! ( EncodedDepInfo :: parse( & data) . unwrap( ) , depinfo) ;
637
+
638
+ let mod_rs = (
639
+ DepInfoPathType :: TargetRootRelative ,
640
+ PathBuf :: from ( "src/mod.rs" ) ,
641
+ checksum. clone ( ) ,
642
+ ) ;
643
+ let depinfo = EncodedDepInfo {
644
+ files : vec ! [ lib_rs. clone( ) , mod_rs. clone( ) ] ,
645
+ env : Vec :: new ( ) ,
646
+ } ;
647
+ let data = depinfo. serialize ( ) . unwrap ( ) ;
648
+ assert_eq ! ( EncodedDepInfo :: parse( & data) . unwrap( ) , depinfo) ;
649
+
650
+ let depinfo = EncodedDepInfo {
651
+ files : vec ! [ lib_rs, mod_rs] ,
652
+ env : vec ! [
653
+ ( "Gimli" . into( ) , Some ( "Legolas" . into( ) ) ) ,
654
+ ( "Beren" . into( ) , Some ( "Lúthien" . into( ) ) ) ,
655
+ ] ,
656
+ } ;
657
+ let data = depinfo. serialize ( ) . unwrap ( ) ;
658
+ assert_eq ! ( EncodedDepInfo :: parse( & data) . unwrap( ) , depinfo) ;
659
+ }
660
+
661
+ #[ test]
662
+ fn round_trip ( ) {
663
+ gen_test ( false ) ;
664
+ }
665
+
666
+ #[ test]
667
+ fn round_trip_with_checksums ( ) {
668
+ gen_test ( true ) ;
669
+ }
670
+ }
0 commit comments