You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@opendal.apache.org by xu...@apache.org on 2023/11/22 11:52:30 UTC
(incubator-opendal) 03/23: Add more test cases for stat
This is an automated email from the ASF dual-hosted git repository.
xuanwo pushed a commit to branch fix-stat
in repository https://gitbox.apache.org/repos/asf/incubator-opendal.git
commit 46b9040f0eb671c288d1be064a4351fafab88ec9
Author: Xuanwo <gi...@xuanwo.io>
AuthorDate: Tue Nov 21 16:31:36 2023 +0800
Add more test cases for stat
Signed-off-by: Xuanwo <gi...@xuanwo.io>
---
core/tests/behavior/write.rs | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/core/tests/behavior/write.rs b/core/tests/behavior/write.rs
index a2685605b..617630ada 100644
--- a/core/tests/behavior/write.rs
+++ b/core/tests/behavior/write.rs
@@ -282,6 +282,11 @@ pub async fn test_stat_file(op: Operator) -> Result<()> {
assert_eq!(meta.mode(), EntryMode::FILE);
assert_eq!(meta.content_length(), size as u64);
+ // Stat a file with trailing slash should return `NotFound`.
+ let result = op.stat(&format!("{path}/")).await;
+ assert!(result.is_err());
+ assert_eq!(result.unwrap_err().kind(), ErrorKind::NotFound);
+
op.delete(&path).await.expect("delete must succeed");
Ok(())
}
@@ -295,6 +300,13 @@ pub async fn test_stat_dir(op: Operator) -> Result<()> {
let meta = op.stat(&path).await?;
assert_eq!(meta.mode(), EntryMode::DIR);
+ // Stat a dir without trailing slash could have two behavior.
+ let result = op.stat(path.trim_end_matches('/')).await;
+ match result {
+ Ok(meta) => assert_eq!(meta.mode(), EntryMode::DIR),
+ Err(err) => assert_eq!(err.kind(), ErrorKind::NotFound),
+ }
+
op.delete(&path).await.expect("delete must succeed");
Ok(())
}
@@ -345,10 +357,16 @@ pub async fn test_stat_not_cleaned_path(op: Operator) -> Result<()> {
pub async fn test_stat_not_exist(op: Operator) -> Result<()> {
let path = uuid::Uuid::new_v4().to_string();
+ // Stat not exist file should returns NotFound.
let meta = op.stat(&path).await;
assert!(meta.is_err());
assert_eq!(meta.unwrap_err().kind(), ErrorKind::NotFound);
+ // Stat not exist dir should also returns NotFound.
+ let meta = op.stat(&format!("{path}/")).await;
+ assert!(meta.is_err());
+ assert_eq!(meta.unwrap_err().kind(), ErrorKind::NotFound);
+
Ok(())
}