4 个版本
| 0.2.2 | 2024 年 6 月 5 日 |
|---|---|
| 0.2.1 | 2024 年 4 月 2 日 |
| 0.2.0 | 2024 年 2 月 5 日 |
| 0.1.0 | 2024 年 1 月 26 日 |
#86 在 测试 中
每月 613 次下载
用于 6 crates
18KB
183 行
测试中的临时目录
在 tempdir 的基础上添加了几个新功能以提高测试效果
- 允许用户使测试使用可预测的路径
- 允许用户使测试保留其临时目录
- 帮助确保测试目录在所有使用它的内容被销毁之前不被删除(通过 Rust 生命周期)
主要入口点是 test_temp_dir!,它返回一个 TestTempDir。
环境变量
行为受 TEST_TEMP_RETAIN 影响
-
0(或未设置):使用TMPDIR或/tmp中的临时目录,并在测试完成后尝试删除它(相当于使用tempfile::TempDir)。 -
1:使用目录target/test/crate::module::function。在测试开始时删除并重新创建它,但之后不要删除它。在 Windows 上,使用,来替换::,因为::不能出现在文件名中。 -
以
/或.开头的路径名:类似于1,但使用提供的路径而不是target/test。
stdout 打印
这是一个用于测试的crate。当调用时,它将在stdout上打印有关测试目录的消息。
过早删除临时目录的风险
当使用原始的 tempfile 或此crate中的 untracked 方法时,很容易编写测试用例,其中临时目录可能被删除,而指向它的路径仍然被存储并准备使用(例如在诸如 tor_keymgr::KeyMgr 或 tor_persist 这样的对象中)。
后果可能包括测试尝试引用已删除的目录;原则上,这甚至可能构成一个漏洞,因为攻击者可能能够用恶意数据替换已删除的目录,然后测试用例可能会读取它!
如果测试用例是这样的,即“文件未找到”被认为是通过,则问题可能不会被检测到。
这只有在 TempDir 或 TestTempDir 对象过早释放的情况下才会发生。此crate的主要API使用Rust生命周期来帮助防止这种情况:临时目录路径不是以 'static 形式直接可访问的。
恐慌
这是一个用于测试的crate。大多数错误条件都会导致恐慌。
其他crate
-
tempfile:原始临时目录的底层设施,具有自动删除功能;此crate的依赖项。 -
temp_testdir:与这个crate类似,但复杂度较低。没有基于生命周期的API,并且文件名不可预测。
依赖项
~2–11MB
~133K SLoC