Skip to content

Commit de5fd43

Browse files
committed
refactor(fspy): change AccessMode to bitflags
1 parent 8b137ab commit de5fd43

File tree

22 files changed

+130
-111
lines changed

22 files changed

+130
-111
lines changed

Cargo.lock

Lines changed: 16 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ attohttpc = { version = "0.30.1", features = ["tls-native", "tls-native-vendored
4141
base64 = "0.22.1"
4242
bincode = "2.0.1"
4343
bindgen = "0.72.1"
44+
bitflags = "2.10.0"
4445
brush-parser = "0.2.18"
4546
bstr = { version = "1.12.0", default-features = false, features = ["alloc", "std"] }
4647
bumpalo = { version = "3.17.0", features = ["allocator-api2"] }

crates/fspy/examples/cli.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use std::{env::args_os, ffi::OsStr, path::PathBuf, pin::Pin};
22

3-
use fspy::AccessMode;
43
use tokio::{
54
fs::File,
65
io::{AsyncWrite, stdout},
@@ -33,12 +32,7 @@ async fn main() -> anyhow::Result<()> {
3332
csv_writer
3433
.write_record(&[
3534
acc.path.to_cow_os_str().to_string_lossy().as_ref().as_bytes(),
36-
match acc.mode {
37-
AccessMode::Read => b"read".as_slice(),
38-
AccessMode::ReadWrite => b"readwrite",
39-
AccessMode::Write => b"write",
40-
AccessMode::ReadDir => b"readdir",
41-
},
35+
format!("{:?}", acc.mode).as_bytes(),
4236
])
4337
.await?;
4438
}

crates/fspy/src/unix/syscall_handler/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ impl SyscallHandler {
6060
}
6161
self.arena.add(PathAccess {
6262
mode: match flags & libc::O_ACCMODE {
63-
libc::O_RDWR => AccessMode::ReadWrite,
64-
libc::O_WRONLY => AccessMode::Write,
65-
_ => AccessMode::Read,
63+
libc::O_RDWR => AccessMode::READ | AccessMode::WRITE,
64+
libc::O_WRONLY => AccessMode::WRITE,
65+
_ => AccessMode::READ,
6666
},
6767
path: NativeStr::from_bytes(path.as_os_str().as_bytes()),
6868
});
@@ -72,7 +72,7 @@ impl SyscallHandler {
7272
fn handle_open_dir(&mut self, caller: Caller, fd: Fd) -> io::Result<()> {
7373
let path = fd.get_path(caller)?;
7474
self.arena.add(PathAccess {
75-
mode: AccessMode::ReadDir,
75+
mode: AccessMode::READ_DIR,
7676
path: NativeStr::from_bytes(path.as_bytes()),
7777
});
7878
Ok(())

crates/fspy/tests/node_fs.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,21 @@ async fn track_node_script(script: &str, args: &[&OsStr]) -> anyhow::Result<Path
2525
#[test(tokio::test)]
2626
async fn read_sync() -> anyhow::Result<()> {
2727
let accesses = track_node_script("try { fs.readFileSync('hello') } catch {}", &[]).await?;
28-
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
28+
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
2929
Ok(())
3030
}
3131

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

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

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

@@ -63,7 +63,7 @@ async fn create_write_stream() -> anyhow::Result<()> {
6363
&[file_path.as_os_str()],
6464
)
6565
.await?;
66-
assert_contains(&accesses, file_path.as_path(), AccessMode::Write);
66+
assert_contains(&accesses, file_path.as_path(), AccessMode::WRITE);
6767
Ok(())
6868
}
6969

@@ -76,14 +76,14 @@ async fn write_sync() -> anyhow::Result<()> {
7676
&[file_path.as_os_str()],
7777
)
7878
.await?;
79-
assert_contains(&accesses, &file_path, AccessMode::Write);
79+
assert_contains(&accesses, &file_path, AccessMode::WRITE);
8080
Ok(())
8181
}
8282

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

@@ -99,6 +99,6 @@ async fn subprocess() -> anyhow::Result<()> {
9999
&[],
100100
)
101101
.await?;
102-
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
102+
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
103103
Ok(())
104104
}

crates/fspy/tests/rust_std.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ async fn open_read() -> anyhow::Result<()> {
1616
let _ = File::open("hello");
1717
})
1818
.await?;
19-
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
19+
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
2020

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

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

4646
Ok(())
4747
}
@@ -68,7 +68,7 @@ async fn subprocess() -> anyhow::Result<()> {
6868
.unwrap();
6969
})
7070
.await?;
71-
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
71+
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
7272

7373
Ok(())
7474
}

crates/fspy/tests/rust_tokio.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ async fn open_read() -> anyhow::Result<()> {
1717
);
1818
})
1919
.await?;
20-
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
20+
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
2121

2222
Ok(())
2323
}
@@ -35,7 +35,7 @@ async fn open_write() -> anyhow::Result<()> {
3535
);
3636
})
3737
.await?;
38-
assert_contains(&accesses, tmp_path.as_path(), AccessMode::Write);
38+
assert_contains(&accesses, tmp_path.as_path(), AccessMode::WRITE);
3939

4040
Ok(())
4141
}
@@ -50,7 +50,7 @@ async fn readdir() -> anyhow::Result<()> {
5050
);
5151
})
5252
.await?;
53-
assert_contains(&accesses, current_dir()?.join("hello_dir").as_path(), AccessMode::ReadDir);
53+
assert_contains(&accesses, current_dir()?.join("hello_dir").as_path(), AccessMode::READ_DIR);
5454

5555
Ok(())
5656
}
@@ -82,7 +82,7 @@ async fn subprocess() -> anyhow::Result<()> {
8282
);
8383
})
8484
.await?;
85-
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::Read);
85+
assert_contains(&accesses, current_dir().unwrap().join("hello").as_path(), AccessMode::READ);
8686

8787
Ok(())
8888
}

0 commit comments

Comments
 (0)