test(tvix): Fix tvix tests on macOS
Prior to this, some tests would not build or would fail in an obscure way. Change-Id: I68587cc7592492ebfd71ca02fc7ccc9ff7c0196f Reviewed-on: https://cl.tvl.fyi/c/depot/+/11544 Tested-by: BuildkiteCI Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
parent
c192cd04b8
commit
8d49ff3d64
3 changed files with 26 additions and 7 deletions
|
@ -57,16 +57,18 @@ impl InodeData {
|
|||
children.len() as u64
|
||||
}
|
||||
},
|
||||
mode: match self {
|
||||
InodeData::Regular(_, _, false) => libc::S_IFREG | 0o444, // no-executable files
|
||||
InodeData::Regular(_, _, true) => libc::S_IFREG | 0o555, // executable files
|
||||
InodeData::Symlink(_) => libc::S_IFLNK | 0o444,
|
||||
InodeData::Directory(_) => libc::S_IFDIR | 0o555,
|
||||
},
|
||||
mode: self.as_fuse_type() | self.mode(),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
|
||||
fn mode(&self) -> u32 {
|
||||
match self {
|
||||
InodeData::Regular(_, _, false) | InodeData::Symlink(_) => 0o444,
|
||||
InodeData::Regular(_, _, true) | InodeData::Directory(_) => 0o555,
|
||||
}
|
||||
}
|
||||
|
||||
pub fn as_fuse_entry(&self, inode: u64) -> fuse_backend_rs::api::filesystem::Entry {
|
||||
fuse_backend_rs::api::filesystem::Entry {
|
||||
inode,
|
||||
|
|
|
@ -30,7 +30,14 @@ fn nix_eval(expr: &str, strictness: Strictness) -> String {
|
|||
.arg(format!("({expr})"))
|
||||
.env(
|
||||
"NIX_REMOTE",
|
||||
format!("local?root={}", store_dir.path().display()),
|
||||
format!(
|
||||
"local?root={}",
|
||||
store_dir
|
||||
.path()
|
||||
.canonicalize()
|
||||
.expect("valid path")
|
||||
.display()
|
||||
),
|
||||
)
|
||||
.output()
|
||||
.unwrap();
|
||||
|
|
|
@ -739,6 +739,7 @@ mod tests {
|
|||
false
|
||||
)]
|
||||
fn builtins_filter_source_unsupported_files(#[case] code: &str, #[case] exp_success: bool) {
|
||||
use nix::errno::Errno;
|
||||
use nix::sys::stat;
|
||||
use nix::unistd;
|
||||
use std::os::unix::net::UnixListener;
|
||||
|
@ -765,6 +766,15 @@ mod tests {
|
|||
stat::Mode::S_IRWXU,
|
||||
0,
|
||||
)
|
||||
.inspect_err(|e| {
|
||||
if *e == Errno::EPERM {
|
||||
eprintln!(
|
||||
"\
|
||||
Missing permissions to create a character device node with mknod(2).
|
||||
Please run this test as root or set CAP_MKNOD."
|
||||
);
|
||||
}
|
||||
})
|
||||
.expect("Failed to create a character device node");
|
||||
|
||||
let code_replaced = code.replace("@fixtures", &temp.path().to_string_lossy());
|
||||
|
|
Loading…
Reference in a new issue