Added file errors to update entry.
This commit is contained in:
		| @@ -99,9 +99,14 @@ impl MoreThanText { | |||||||
|             Ok(_) => (), |             Ok(_) => (), | ||||||
|             Err(err) => return Err(err), |             Err(err) => return Err(err), | ||||||
|         } |         } | ||||||
|         write(Path::new(&self.dir).join(&id), entry.to_bytes()) |         match write(Path::new(&self.dir).join(&id), entry.to_bytes()).await { | ||||||
|             .await |             Ok(_) => (), | ||||||
|             .unwrap(); |             Err(err) => { | ||||||
|  |                 let mut error = DBError::new("data write"); | ||||||
|  |                 error.add_source(err); | ||||||
|  |                 return Err(error); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|         let mut cache = self.cache.lock().await; |         let mut cache = self.cache.lock().await; | ||||||
|         cache.insert(id.to_string(), entry); |         cache.insert(id.to_string(), entry); | ||||||
|         Ok(()) |         Ok(()) | ||||||
| @@ -262,6 +267,31 @@ mod cache { | |||||||
|             Err(err) => assert_eq!(err.to_string(), "cache entry not found"), |             Err(err) => assert_eq!(err.to_string(), "cache entry not found"), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     #[async_std::test] | ||||||
|  |     async fn update_bad_file() { | ||||||
|  |         let mtt = MTT::new().await; | ||||||
|  |         let msg = "could not write to file"; | ||||||
|  |         let id = mtt | ||||||
|  |             .db | ||||||
|  |             .add_entry(CacheEntry::Raw("fleeting".to_string())) | ||||||
|  |             .await | ||||||
|  |             .unwrap(); | ||||||
|  |         mtt.create_io_error().await; | ||||||
|  |         match mtt | ||||||
|  |             .db | ||||||
|  |             .update_entry(&id, CacheEntry::Raw("failure".to_string())) | ||||||
|  |             .await | ||||||
|  |         { | ||||||
|  |             Ok(_) => assert!(false, "This should produce a write failure."), | ||||||
|  |             Err(err) => { | ||||||
|  |                 assert_eq!(err.to_string(), "data write"); | ||||||
|  |                 assert!(err.source().is_some(), "Must include the source error."); | ||||||
|  |                 let err_msg = err.source().unwrap().to_string(); | ||||||
|  |                 assert!(err_msg.contains(msg), "'{}' not in '{}'", msg, err_msg); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| #[cfg(test)] | #[cfg(test)] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user