File tree Expand file tree Collapse file tree 5 files changed +25
-14
lines changed Expand file tree Collapse file tree 5 files changed +25
-14
lines changed Original file line number Diff line number Diff line change @@ -11,7 +11,9 @@ OpenDAL is in **alpha** stage and has been early adopted by [databend](https://g
11
11
``` rust
12
12
use anyhow :: Result ;
13
13
use futures :: AsyncReadExt ;
14
+ use futures :: StreamExt ;
14
15
use opendal :: services :: fs;
16
+ use opendal :: ObjectMode ;
15
17
use opendal :: Operator ;
16
18
17
19
#[tokio:: main]
@@ -38,6 +40,16 @@ async fn main() -> Result<()> {
38
40
let meta = o . metadata (). await ? ;
39
41
assert_eq! (meta . content_length (), 13 );
40
42
43
+ // List current dir.
44
+ let mut obs = op . objects ("" ). map (| o | o . expect (" list object" ));
45
+ while let Some (o ) = obs . next (). await {
46
+ let meta = o . metadata (). await ? ;
47
+ if meta . path (). contains (" test_file" ) {
48
+ let mode = meta . mode ();
49
+ assert! (mode . contains (ObjectMode :: FILE ));
50
+ }
51
+ }
52
+
41
53
// Delete file.
42
54
o . delete (). await ? ;
43
55
Original file line number Diff line number Diff line change @@ -40,15 +40,15 @@ async fn main() -> Result<()> {
40
40
41
41
// Get file's Metadata
42
42
let meta = o. metadata ( ) . await ?;
43
- assert_eq ! ( meta. content_length( ) , Some ( 13 ) ) ;
43
+ assert_eq ! ( meta. content_length( ) , 13 ) ;
44
44
45
45
// List current dir.
46
46
let mut obs = op. objects ( "" ) . map ( |o| o. expect ( "list object" ) ) ;
47
47
let mut found = false ;
48
48
while let Some ( o) = obs. next ( ) . await {
49
49
let meta = o. metadata ( ) . await ?;
50
50
if meta. path ( ) . contains ( "test_file" ) {
51
- let mode = meta. mode ( ) . expect ( "object mode" ) ;
51
+ let mode = meta. mode ( ) ;
52
52
assert ! ( mode. contains( ObjectMode :: FILE ) ) ;
53
53
54
54
found = true
Original file line number Diff line number Diff line change @@ -127,12 +127,7 @@ impl AsyncSeek for Reader {
127
127
) -> Poll < std:: io:: Result < u64 > > {
128
128
if let ReadState :: Seeking ( future) = & mut self . state {
129
129
match ready ! ( Pin :: new( future) . poll( cx) ) {
130
- Ok ( meta) => {
131
- self . total_size = Some (
132
- meta. content_length ( )
133
- . expect ( "object doesn't have content length" ) ,
134
- )
135
- }
130
+ Ok ( meta) => self . total_size = Some ( meta. content_length ( ) ) ,
136
131
Err ( e) => return Poll :: Ready ( Err ( io:: Error :: from ( e) ) ) ,
137
132
}
138
133
}
Original file line number Diff line number Diff line change @@ -126,17 +126,21 @@ impl Metadata {
126
126
self
127
127
}
128
128
129
- pub fn mode ( & self ) -> Option < ObjectMode > {
130
- self . mode
129
+ pub fn mode ( & self ) -> ObjectMode {
130
+ debug_assert ! ( self . mode. is_some( ) , "mode must exist" ) ;
131
+
132
+ self . mode . unwrap_or_default ( )
131
133
}
132
134
133
135
pub ( crate ) fn set_mode ( & mut self , mode : ObjectMode ) -> & mut Self {
134
136
self . mode = Some ( mode) ;
135
137
self
136
138
}
137
139
138
- pub fn content_length ( & self ) -> Option < u64 > {
139
- self . content_length
140
+ pub fn content_length ( & self ) -> u64 {
141
+ debug_assert ! ( self . content_length. is_some( ) , "content length must exist" ) ;
142
+
143
+ self . content_length . unwrap_or_default ( )
140
144
}
141
145
142
146
pub ( crate ) fn set_content_length ( & mut self , content_length : u64 ) -> & mut Self {
Original file line number Diff line number Diff line change @@ -67,7 +67,7 @@ impl BehaviorTest {
67
67
68
68
// Step 3: Stat this file
69
69
let meta = self . op . object ( & path) . metadata ( ) . await ?;
70
- assert_eq ! ( meta. content_length( ) . unwrap ( ) , size as u64 , "stat file" ) ;
70
+ assert_eq ! ( meta. content_length( ) , size as u64 , "stat file" ) ;
71
71
72
72
// Step 4: Read this file's content
73
73
// Step 4.1: Read the whole file.
@@ -103,7 +103,7 @@ impl BehaviorTest {
103
103
while let Some ( o) = obs. next ( ) . await {
104
104
let meta = o. metadata ( ) . await ?;
105
105
if meta. path ( ) == path {
106
- let mode = meta. mode ( ) . expect ( "object mode" ) ;
106
+ let mode = meta. mode ( ) ;
107
107
assert ! (
108
108
mode. contains( ObjectMode :: FILE ) ,
109
109
"expected: {:?}, actual: {:?}" ,
You can’t perform that action at this time.
0 commit comments