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