2021-06-24 17:38:16 -04:00
use crate ::util ::TestRepo ;
2019-09-03 09:03:44 +02:00
use ostree ::{ checksum_file_from_input , ObjectType } ;
2019-09-02 12:22:58 +02:00
2021-11-16 09:17:02 +01:00
#[ test ]
fn list_repo_objects ( ) {
let repo = TestRepo ::new ( ) ;
let commit_checksum = repo . test_commit ( " test " ) ;
let mut dirtree_cnt = 0 ;
let mut dirmeta_cnt = 0 ;
let mut file_cnt = 0 ;
let mut commit_cnt = 0 ;
2021-12-01 15:18:47 +00:00
let objects = repo
. repo
2022-10-25 13:03:52 +00:00
. list_objects ( ffi ::OSTREE_REPO_LIST_OBJECTS_ALL , gio ::Cancellable ::NONE )
2021-12-01 15:18:47 +00:00
. expect ( " List Objects " ) ;
2021-11-16 11:28:38 +01:00
for ( object , _items ) in objects {
2021-12-01 15:18:47 +00:00
match object . object_type ( ) {
ObjectType ::DirTree = > {
dirtree_cnt + = 1 ;
}
ObjectType ::DirMeta = > {
dirmeta_cnt + = 1 ;
}
ObjectType ::File = > {
file_cnt + = 1 ;
}
2021-11-16 11:27:50 +01:00
ObjectType ::Commit = > {
assert_eq! ( commit_checksum . to_string ( ) , object . checksum ( ) ) ;
commit_cnt + = 1 ;
2021-12-01 15:18:47 +00:00
}
x = > {
panic! ( " unexpected object type {} " , x ) ;
}
2021-11-16 11:27:50 +01:00
}
2021-11-16 09:17:02 +01:00
}
assert_eq! ( dirtree_cnt , 2 ) ;
assert_eq! ( dirmeta_cnt , 1 ) ;
assert_eq! ( file_cnt , 1 ) ;
assert_eq! ( commit_cnt , 1 ) ;
}
2019-09-02 13:08:35 +02:00
#[ test ]
fn should_checksum_file_from_input ( ) {
let repo = TestRepo ::new ( ) ;
let commit_checksum = repo . test_commit ( " test " ) ;
let objects = repo
. repo
2022-10-25 13:03:52 +00:00
. traverse_commit ( & commit_checksum , - 1 , gio ::Cancellable ::NONE )
2019-09-02 13:08:35 +02:00
. expect ( " traverse commit " ) ;
for obj in objects {
if obj . object_type ( ) ! = ObjectType ::File {
continue ;
}
let ( stream , file_info , xattrs ) = repo
. repo
2022-10-25 13:03:52 +00:00
. load_file ( obj . checksum ( ) , gio ::Cancellable ::NONE )
2019-09-02 13:08:35 +02:00
. expect ( " load file " ) ;
let result = checksum_file_from_input (
2022-06-23 17:36:46 -04:00
& file_info ,
Some ( & xattrs ) ,
2019-09-02 13:08:35 +02:00
stream . as_ref ( ) ,
ObjectType ::File ,
2022-10-25 13:03:52 +00:00
gio ::Cancellable ::NONE ,
2019-09-02 13:08:35 +02:00
)
. expect ( " checksum file from input " ) ;
2019-09-03 09:03:44 +02:00
assert_eq! ( result . to_string ( ) , obj . checksum ( ) ) ;
2019-09-02 13:08:35 +02:00
}
}