我正在创建一个函数,它将在某个时候检查当前目录。从签名来看,current_dir()
可能会返回一个错误,我想测试它的情况。但是我不知道如何做到这一点。
下面是我的代码(playground):
use std::env;
#[allow(unused)]
fn check_current_dir() -> Result<(), &'static str> {
if let Ok(current_dir) = env::current_dir() {
println!("Current dir is ok: {:?}", current_dir);
return Ok(());
} else {
return Err("Currentdir failed");
}
}
#[cfg(test)]
mod check_current_dir {
use super::*;
#[test]
fn current_dir_fail() {
assert!(check_current_dir().is_ok()) // want to make it fail
}
}
我尝试创建一个目录,将当前目录移动到该目录,然后删除该目录,但失败了。我尝试使用一个符号链接目录,但current_dir()
仍然返回Ok(_)
。这是专为在Linux上运行而设计的。
有谁知道吗?
1条答案
按热度按时间xesrikrc1#
current_dir
在Unix上使用的getcwd
手册页中列出了可能的故障:从其中我排除了
EFAULT
,EINVAL
和ERANGE
,因为Rustsstd
正在为您处理buf
和size
。因此,例如,这个删除当前目录的测试将失败:但是对于您当前的
check_current_dir
实现,这实际上是在测试std
,它已经经过了很好的测试,您不需要这样做。