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:
Alice Carroll 2024-04-29 20:20:52 +03:00 committed by caralice
parent c192cd04b8
commit 8d49ff3d64
3 changed files with 26 additions and 7 deletions

View file

@ -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,

View file

@ -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();

View file

@ -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());