Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 16 additions & 15 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ attohttpc = { version = "0.30.1", features = ["tls-native", "tls-native-vendored
base64 = "0.22.1"
bincode = "2.0.1"
bindgen = "0.72.1"
bitflags = "2.10.0"
brush-parser = "0.2.18"
bstr = { version = "1.12.0", default-features = false, features = ["alloc", "std"] }
bumpalo = { version = "3.17.0", features = ["allocator-api2"] }
Expand Down
8 changes: 1 addition & 7 deletions crates/fspy/examples/cli.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
use std::{env::args_os, ffi::OsStr, path::PathBuf, pin::Pin};

use fspy::AccessMode;
use tokio::{
fs::File,
io::{AsyncWrite, stdout},
Expand Down Expand Up @@ -33,12 +32,7 @@ async fn main() -> anyhow::Result<()> {
csv_writer
.write_record(&[
acc.path.to_cow_os_str().to_string_lossy().as_ref().as_bytes(),
match acc.mode {
AccessMode::Read => b"read".as_slice(),
AccessMode::ReadWrite => b"readwrite",
AccessMode::Write => b"write",
AccessMode::ReadDir => b"readdir",
},
format!("{:?}", acc.mode).as_bytes(),
])
.await?;
}
Expand Down
8 changes: 4 additions & 4 deletions crates/fspy/src/unix/syscall_handler/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -60,9 +60,9 @@ impl SyscallHandler {
}
self.arena.add(PathAccess {
mode: match flags & libc::O_ACCMODE {
libc::O_RDWR => AccessMode::ReadWrite,
libc::O_WRONLY => AccessMode::Write,
_ => AccessMode::Read,
libc::O_RDWR => AccessMode::READ | AccessMode::WRITE,
libc::O_WRONLY => AccessMode::WRITE,
_ => AccessMode::READ,
},
path: NativeStr::from_bytes(path.as_os_str().as_bytes()),
});
Expand All @@ -72,7 +72,7 @@ impl SyscallHandler {
fn handle_open_dir(&mut self, caller: Caller, fd: Fd) -> io::Result<()> {
let path = fd.get_path(caller)?;
self.arena.add(PathAccess {
mode: AccessMode::ReadDir,
mode: AccessMode::READ_DIR,
path: NativeStr::from_bytes(path.as_bytes()),
});
Ok(())
Expand Down
16 changes: 8 additions & 8 deletions crates/fspy/tests/node_fs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,21 @@ async fn track_node_script(script: &str, args: &[&OsStr]) -> anyhow::Result<Path
#[test(tokio::test)]
async fn read_sync() -> anyhow::Result<()> {
let accesses = track_node_script("try { fs.readFileSync('hello') } catch {}", &[]).await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
Ok(())
}

#[test(tokio::test)]
async fn exist_sync() -> anyhow::Result<()> {
let accesses = track_node_script("try { fs.existsSync('hello') } catch {}", &[]).await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
Ok(())
}

#[test(tokio::test)]
async fn stat_sync() -> anyhow::Result<()> {
let accesses = track_node_script("try { fs.statSync('hello') } catch {}", &[]).await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
Ok(())
}

Expand All @@ -50,7 +50,7 @@ async fn create_read_stream() -> anyhow::Result<()> {
&[],
)
.await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
Ok(())
}

Expand All @@ -63,7 +63,7 @@ async fn create_write_stream() -> anyhow::Result<()> {
&[file_path.as_os_str()],
)
.await?;
assert_contains(&accesses, file_path.as_path(), AccessMode::Write);
assert_contains(&accesses, file_path.as_path(), AccessMode::WRITE);
Ok(())
}

Expand All @@ -76,14 +76,14 @@ async fn write_sync() -> anyhow::Result<()> {
&[file_path.as_os_str()],
)
.await?;
assert_contains(&accesses, &file_path, AccessMode::Write);
assert_contains(&accesses, &file_path, AccessMode::WRITE);
Ok(())
}

#[test(tokio::test)]
async fn read_dir_sync() -> anyhow::Result<()> {
let accesses = track_node_script("try { fs.readdirSync('.') } catch {}", &[]).await?;
assert_contains(&accesses, &current_dir().unwrap(), AccessMode::ReadDir);
assert_contains(&accesses, &current_dir().unwrap(), AccessMode::READ_DIR);
Ok(())
}

Expand All @@ -99,6 +99,6 @@ async fn subprocess() -> anyhow::Result<()> {
&[],
)
.await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
Ok(())
}
8 changes: 4 additions & 4 deletions crates/fspy/tests/rust_std.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ async fn open_read() -> anyhow::Result<()> {
let _ = File::open("hello");
})
.await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);

Ok(())
}
Expand All @@ -30,7 +30,7 @@ async fn open_write() -> anyhow::Result<()> {
let _ = OpenOptions::new().write(true).open(tmp_path_str);
})
.await?;
assert_contains(&accesses, tmp_path.as_path(), AccessMode::Write);
assert_contains(&accesses, tmp_path.as_path(), AccessMode::WRITE);

Ok(())
}
Expand All @@ -41,7 +41,7 @@ async fn readdir() -> anyhow::Result<()> {
let _ = std::fs::read_dir("hello_dir");
})
.await?;
assert_contains(&accesses, current_dir()?.join("hello_dir").as_path(), AccessMode::ReadDir);
assert_contains(&accesses, current_dir()?.join("hello_dir").as_path(), AccessMode::READ_DIR);

Ok(())
}
Expand All @@ -68,7 +68,7 @@ async fn subprocess() -> anyhow::Result<()> {
.unwrap();
})
.await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);

Ok(())
}
8 changes: 4 additions & 4 deletions crates/fspy/tests/rust_tokio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ async fn open_read() -> anyhow::Result<()> {
);
})
.await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);

Ok(())
}
Expand All @@ -35,7 +35,7 @@ async fn open_write() -> anyhow::Result<()> {
);
})
.await?;
assert_contains(&accesses, tmp_path.as_path(), AccessMode::Write);
assert_contains(&accesses, tmp_path.as_path(), AccessMode::WRITE);

Ok(())
}
Expand All @@ -50,7 +50,7 @@ async fn readdir() -> anyhow::Result<()> {
);
})
.await?;
assert_contains(&accesses, current_dir()?.join("hello_dir").as_path(), AccessMode::ReadDir);
assert_contains(&accesses, current_dir()?.join("hello_dir").as_path(), AccessMode::READ_DIR);

Ok(())
}
Expand Down Expand Up @@ -82,7 +82,7 @@ async fn subprocess() -> anyhow::Result<()> {
);
})
.await?;
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);

Ok(())
}
Loading