@@ -432,6 +432,7 @@ mod find {
432
432
use gix_pack:: Find ;
433
433
434
434
use crate :: basic_repo;
435
+ use crate :: repository:: object:: empty_bare_in_memory_repo;
435
436
436
437
#[ test]
437
438
fn find_and_try_find_with_and_without_object_cache ( ) -> crate :: Result {
@@ -512,18 +513,23 @@ mod find {
512
513
}
513
514
514
515
#[ test]
515
- fn empty_blob_can_always_be_found ( ) -> crate :: Result {
516
+ fn empty_blob_can_be_found_if_it_exists ( ) -> crate :: Result {
516
517
let repo = basic_repo ( ) ?;
517
518
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
+ ) ;
519
525
assert ! ( repo. has_object( empty_blob) ) ;
520
526
assert_eq ! (
521
527
repo. find_header( empty_blob) ?,
522
528
gix_odb:: find:: Header :: Loose {
523
529
kind: gix_object:: Kind :: Blob ,
524
530
size: 0 ,
525
531
} ,
526
- "empty blob is considered a loose object "
532
+ "empty blob is found when it exists in the repository "
527
533
) ;
528
534
assert_eq ! (
529
535
repo. try_find_object( empty_blob) ?
@@ -539,46 +545,51 @@ mod find {
539
545
kind: gix_object:: Kind :: Blob ,
540
546
size: 0 ,
541
547
} ) ,
542
- "empty blob is considered a loose object "
548
+ "empty blob is found when it exists in the repository "
543
549
) ;
544
550
Ok ( ( ) )
545
551
}
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
+ }
546
567
}
547
568
548
569
#[ test]
549
570
fn empty_objects_are_always_present_but_not_in_plumbing ( ) -> crate :: Result {
550
571
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 ( ) ;
552
573
553
574
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 "
556
577
) ;
557
578
assert ! ( !repo. objects. contains( & empty_blob_id) ) ;
558
579
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
+ ) ;
562
584
assert_eq ! ( repo. objects. try_header( & empty_blob_id) ?, None ) ;
563
585
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( ) ) ;
571
588
589
+ assert ! ( repo. try_find_object( empty_blob_id) ?. is_none( ) ) ;
572
590
let mut buf = Vec :: new ( ) ;
573
591
assert_eq ! ( repo. objects. try_find( & empty_blob_id, & mut buf) ?, None ) ;
574
592
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
-
582
593
Ok ( ( ) )
583
594
}
584
595
0 commit comments