Added file errors to update entry.
This commit is contained in:
		@@ -99,9 +99,14 @@ impl MoreThanText {
 | 
			
		||||
            Ok(_) => (),
 | 
			
		||||
            Err(err) => return Err(err),
 | 
			
		||||
        }
 | 
			
		||||
        write(Path::new(&self.dir).join(&id), entry.to_bytes())
 | 
			
		||||
            .await
 | 
			
		||||
            .unwrap();
 | 
			
		||||
        match write(Path::new(&self.dir).join(&id), entry.to_bytes()).await {
 | 
			
		||||
            Ok(_) => (),
 | 
			
		||||
            Err(err) => {
 | 
			
		||||
                let mut error = DBError::new("data write");
 | 
			
		||||
                error.add_source(err);
 | 
			
		||||
                return Err(error);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        let mut cache = self.cache.lock().await;
 | 
			
		||||
        cache.insert(id.to_string(), entry);
 | 
			
		||||
        Ok(())
 | 
			
		||||
@@ -262,6 +267,31 @@ mod cache {
 | 
			
		||||
            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)]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user