@@ -8,7 +8,7 @@ use iroh_blobs::{
8
8
client:: tags:: { self , TagInfo } ,
9
9
proto:: RpcService ,
10
10
} ,
11
- BlobFormat , Hash ,
11
+ BlobFormat , Hash , HashAndFormat ,
12
12
} ;
13
13
use testresult:: TestResult ;
14
14
@@ -27,12 +27,18 @@ fn expected(tags: impl IntoIterator<Item = &'static str>) -> Vec<TagInfo> {
27
27
. collect ( )
28
28
}
29
29
30
+ async fn set < C : quic_rpc:: Connector < RpcService > > (
31
+ tags : & tags:: Client < C > ,
32
+ names : impl IntoIterator < Item = & str > ,
33
+ ) -> TestResult < ( ) > {
34
+ for name in names {
35
+ tags. set ( name, Hash :: new ( name) ) . await ?;
36
+ }
37
+ Ok ( ( ) )
38
+ }
39
+
30
40
async fn tags_smoke < C : quic_rpc:: Connector < RpcService > > ( tags : tags:: Client < C > ) -> TestResult < ( ) > {
31
- tags. set ( "a" , Hash :: new ( "a" ) ) . await ?;
32
- tags. set ( "b" , Hash :: new ( "b" ) ) . await ?;
33
- tags. set ( "c" , Hash :: new ( "c" ) ) . await ?;
34
- tags. set ( "d" , Hash :: new ( "d" ) ) . await ?;
35
- tags. set ( "e" , Hash :: new ( "e" ) ) . await ?;
41
+ set ( & tags, [ "a" , "b" , "c" , "d" , "e" ] ) . await ?;
36
42
let stream = tags. list ( ) . await ?;
37
43
let res = to_vec ( stream) . await ?;
38
44
assert_eq ! ( res, expected( [ "a" , "b" , "c" , "d" , "e" ] ) ) ;
@@ -63,11 +69,7 @@ async fn tags_smoke<C: quic_rpc::Connector<RpcService>>(tags: tags::Client<C>) -
63
69
let res = to_vec ( stream) . await ?;
64
70
assert_eq ! ( res, expected( [ ] ) ) ;
65
71
66
- tags. set ( "a" , Hash :: new ( "a" ) ) . await ?;
67
- tags. set ( "aa" , Hash :: new ( "aa" ) ) . await ?;
68
- tags. set ( "aaa" , Hash :: new ( "aaa" ) ) . await ?;
69
- tags. set ( "aab" , Hash :: new ( "aab" ) ) . await ?;
70
- tags. set ( "b" , Hash :: new ( "b" ) ) . await ?;
72
+ set ( & tags, [ "a" , "aa" , "aaa" , "aab" , "b" ] ) . await ?;
71
73
72
74
let stream = tags. list_prefix ( "aa" ) . await ?;
73
75
let res = to_vec ( stream) . await ?;
@@ -83,9 +85,7 @@ async fn tags_smoke<C: quic_rpc::Connector<RpcService>>(tags: tags::Client<C>) -
83
85
let res = to_vec ( stream) . await ?;
84
86
assert_eq ! ( res, expected( [ ] ) ) ;
85
87
86
- tags. set ( "a" , Hash :: new ( "a" ) ) . await ?;
87
- tags. set ( "b" , Hash :: new ( "b" ) ) . await ?;
88
- tags. set ( "c" , Hash :: new ( "c" ) ) . await ?;
88
+ set ( & tags, [ "a" , "b" , "c" ] ) . await ?;
89
89
90
90
assert_eq ! (
91
91
tags. get( "b" ) . await ?,
@@ -103,6 +103,21 @@ async fn tags_smoke<C: quic_rpc::Connector<RpcService>>(tags: tags::Client<C>) -
103
103
104
104
assert_eq ! ( tags. get( "b" ) . await ?, None ) ;
105
105
106
+ tags. delete_prefix ( "" ) . await ?;
107
+
108
+ tags. set ( "a" , HashAndFormat :: hash_seq ( Hash :: new ( "a" ) ) )
109
+ . await ?;
110
+ tags. set ( "b" , HashAndFormat :: raw ( Hash :: new ( "b" ) ) ) . await ?;
111
+ let stream = tags. list_hash_seq ( ) . await ?;
112
+ let res = to_vec ( stream) . await ?;
113
+ assert_eq ! (
114
+ res,
115
+ vec![ TagInfo {
116
+ name: "a" . into( ) ,
117
+ hash: Hash :: new( "a" ) ,
118
+ format: BlobFormat :: HashSeq ,
119
+ } , ]
120
+ ) ;
106
121
Ok ( ( ) )
107
122
}
108
123
0 commit comments