@@ -432,6 +432,7 @@ mod find {
432432 use gix_pack:: Find ;
433433
434434 use crate :: basic_repo;
435+ use crate :: repository:: object:: empty_bare_in_memory_repo;
435436
436437 #[ test]
437438 fn find_and_try_find_with_and_without_object_cache ( ) -> crate :: Result {
@@ -512,18 +513,23 @@ mod find {
512513 }
513514
514515 #[ test]
515- fn empty_blob_can_always_be_found ( ) -> crate :: Result {
516+ fn empty_blob_can_be_found_if_it_exists ( ) -> crate :: Result {
516517 let repo = basic_repo ( ) ?;
517518 let empty_blob = gix:: hash:: ObjectId :: empty_blob ( repo. object_hash ( ) ) ;
518- assert_eq ! ( repo. find_object( empty_blob) ?. into_blob( ) . data. len( ) , 0 ) ;
519+
520+ assert_eq ! (
521+ repo. find_object( empty_blob) ?. into_blob( ) . data. len( ) ,
522+ 0 ,
523+ "The basic_repo fixture contains an empty blob"
524+ ) ;
519525 assert ! ( repo. has_object( empty_blob) ) ;
520526 assert_eq ! (
521527 repo. find_header( empty_blob) ?,
522528 gix_odb:: find:: Header :: Loose {
523529 kind: gix_object:: Kind :: Blob ,
524530 size: 0 ,
525531 } ,
526- "empty blob is considered a loose object "
532+ "empty blob is found when it exists in the repository "
527533 ) ;
528534 assert_eq ! (
529535 repo. try_find_object( empty_blob) ?
@@ -539,46 +545,51 @@ mod find {
539545 kind: gix_object:: Kind :: Blob ,
540546 size: 0 ,
541547 } ) ,
542- "empty blob is considered a loose object "
548+ "empty blob is found when it exists in the repository "
543549 ) ;
544550 Ok ( ( ) )
545551 }
552+
553+ #[ test]
554+ fn empty_blob ( ) -> crate :: Result {
555+ let repo = empty_bare_in_memory_repo ( ) ?;
556+ let empty_blob = repo. empty_blob ( ) ;
557+
558+ assert_eq ! ( empty_blob. id, repo. object_hash( ) . empty_blob( ) ) ;
559+ assert_eq ! ( empty_blob. data. len( ) , 0 ) ;
560+
561+ assert ! ( !repo. has_object( empty_blob. id) , "it doesn't exist by default" ) ;
562+ repo. write_blob ( & empty_blob. data ) ?;
563+ assert ! ( repo. has_object( empty_blob. id) , "it exists after it was written" ) ;
564+
565+ Ok ( ( ) )
566+ }
546567}
547568
548569#[ test]
549570fn empty_objects_are_always_present_but_not_in_plumbing ( ) -> crate :: Result {
550571 let repo = empty_bare_in_memory_repo ( ) ?;
551- let empty_blob_id = gix :: hash :: ObjectId :: empty_blob ( repo. object_hash ( ) ) ;
572+ let empty_blob_id = repo. object_hash ( ) . empty_blob ( ) ;
552573
553574 assert ! (
554- repo. has_object( empty_blob_id) ,
555- "empty object is always present even if it's not "
575+ ! repo. has_object( empty_blob_id) ,
576+ "empty blob is not present unless it actually exists "
556577 ) ;
557578 assert ! ( !repo. objects. contains( & empty_blob_id) ) ;
558579
559- let header = repo. find_header ( empty_blob_id) ?;
560- assert_eq ! ( header. kind( ) , gix_object:: Kind :: Blob ) ;
561- assert_eq ! ( header. size( ) , 0 ) ;
580+ assert ! (
581+ repo. find_header( empty_blob_id) . is_err( ) ,
582+ "Empty blob doesn't exist automatically just like in Git"
583+ ) ;
562584 assert_eq ! ( repo. objects. try_header( & empty_blob_id) ?, None ) ;
563585
564- let header = repo. try_find_header ( empty_blob_id) ?. expect ( "should find header" ) ;
565- assert_eq ! ( header. kind( ) , gix_object:: Kind :: Blob ) ;
566- assert_eq ! ( header. size( ) , 0 ) ;
567-
568- let obj = repo. find_object ( empty_blob_id) ?;
569- assert_eq ! ( obj. kind, gix_object:: Kind :: Blob ) ;
570- assert_eq ! ( obj. data. len( ) , 0 ) ;
586+ assert_eq ! ( repo. try_find_header( empty_blob_id) ?, None ) ;
587+ assert ! ( repo. find_object( empty_blob_id) . is_err( ) ) ;
571588
589+ assert ! ( repo. try_find_object( empty_blob_id) ?. is_none( ) ) ;
572590 let mut buf = Vec :: new ( ) ;
573591 assert_eq ! ( repo. objects. try_find( & empty_blob_id, & mut buf) ?, None ) ;
574592
575- let obj = repo. try_find_object ( empty_blob_id) ?. expect ( "should find object" ) ;
576- assert_eq ! ( obj. kind, gix_object:: Kind :: Blob ) ;
577- assert_eq ! ( obj. data. len( ) , 0 ) ;
578-
579- let blob = obj. try_into_blob ( ) ?;
580- assert_eq ! ( blob. data. len( ) , 0 ) ;
581-
582593 Ok ( ( ) )
583594}
584595
0 commit comments