Convert some project tests to use FakeFs

Also, tweak some FakeFs methods to make them slightly more convenient.
This commit is contained in:
Max Brunsfeld 2022-02-17 11:09:27 -08:00
parent 4b0b97f773
commit 6d8db5f6bb
8 changed files with 89 additions and 116 deletions

View file

@ -7,6 +7,7 @@ use std::{
os::unix::fs::MetadataExt,
path::{Path, PathBuf},
pin::Pin,
sync::Arc,
time::{Duration, SystemTime},
};
use text::Rope;
@ -268,7 +269,7 @@ pub struct FakeFs {
#[cfg(any(test, feature = "test-support"))]
impl FakeFs {
pub fn new(executor: std::sync::Arc<gpui::executor::Background>) -> Self {
pub fn new(executor: std::sync::Arc<gpui::executor::Background>) -> Arc<Self> {
let (events_tx, _) = postage::broadcast::channel(2048);
let mut entries = std::collections::BTreeMap::new();
entries.insert(
@ -283,20 +284,20 @@ impl FakeFs {
content: None,
},
);
Self {
Arc::new(Self {
executor,
state: futures::lock::Mutex::new(FakeFsState {
entries,
next_inode: 1,
events_tx,
}),
}
})
}
pub async fn insert_dir(&self, path: impl AsRef<Path>) -> Result<()> {
pub async fn insert_dir(&self, path: impl AsRef<Path>) {
let mut state = self.state.lock().await;
let path = path.as_ref();
state.validate_path(path)?;
state.validate_path(path).unwrap();
let inode = state.next_inode;
state.next_inode += 1;
@ -313,13 +314,12 @@ impl FakeFs {
},
);
state.emit_event(&[path]).await;
Ok(())
}
pub async fn insert_file(&self, path: impl AsRef<Path>, content: String) -> Result<()> {
pub async fn insert_file(&self, path: impl AsRef<Path>, content: String) {
let mut state = self.state.lock().await;
let path = path.as_ref();
state.validate_path(path)?;
state.validate_path(path).unwrap();
let inode = state.next_inode;
state.next_inode += 1;
@ -336,7 +336,6 @@ impl FakeFs {
},
);
state.emit_event(&[path]).await;
Ok(())
}
#[must_use]
@ -353,7 +352,7 @@ impl FakeFs {
match tree {
Object(map) => {
self.insert_dir(path).await.unwrap();
self.insert_dir(path).await;
for (name, contents) in map {
let mut path = PathBuf::from(path);
path.push(name);
@ -361,10 +360,10 @@ impl FakeFs {
}
}
Null => {
self.insert_dir(&path).await.unwrap();
self.insert_dir(&path).await;
}
String(contents) => {
self.insert_file(&path, contents).await.unwrap();
self.insert_file(&path, contents).await;
}
_ => {
panic!("JSON object must contain only objects, strings, or null");