6 个版本
0.2.1 | 2021 年 3 月 1 日 |
---|---|
0.2.0 | 2021 年 2 月 28 日 |
0.1.6 | 2021 年 2 月 27 日 |
1190 在 文件系统
每月 23 次下载
33KB
530 行
文件系统测试器 - 帮助启动文件系统测试单元的包
=================================================================
概述
此库提供了用于测试文件系统操作的简单实用工具。当您测试某些内容时,需要一些沙盒,测试完成后应该将其擦除。此包允许您配置临时目录及其内部结构,执行测试,并在所有工作完成后将其删除。
它可以配置为创建自定义目录结构。创建此包的主要思想是为应与文件系统一起工作的程序编写测试单元,操作目录、文件以及它们之间的链接。I/O 测试需要具有一些文件的模板目录,这些文件位于文件系统结构的不同深度。
随机生成器用于为包含其他测试文件系统单元的临时目录名称添加唯一性。
配置
测试目录结构可以通过 yaml 或 json 格式进行配置。
Yaml 配置
---
- directory:
name: test
content:
- file:
name: test.txt
content:
inline_bytes:
- 116
- 101
- 115
- 116
它将生成名为 test_726537253725 的目录,并在该目录中创建名为 test.txt 的文件,内容为 "test"。目录名称中的数字可能不同,因为这是一个随机数。
Json 配置
可以通过 json 格式配置相同的目录结构
示例
[
{
"directory":
{
"name": "test",
"content":
[
{
"file":
{
"name": "test.txt",
"content":
{
"inline": [116,101,115,116]
}
}
}
]
}
}
]
目录配置
目录结构可以包含多个嵌套目录。 重要 配置的第一级应从单个目录开始。此包含目录将是带有附加随机数字的名称的沙盒容器。其他内部单元:目录、文件和链接将不会更改其名称,并可以在测试中按配置使用。
目录配置可以指定名称和内容
- 名称 - 表示目录名称的字符串
- 内容 - 内部文件系统单元(目录、文件、链接)的列表(数组)
示例
yaml
---
- directory:
name: test
content:
- file:
name: test.txt
content: empty
- link:
name: test_link
target: test.txt
或相同的 json
{
"name": "test_dir",
"content": [
{
"file": {
"name": "test.txt",
"content": "empty"
}
},
{
"link": {
"name": "test_link",
"target": "test.txt"
}
}
]
}
如何定义测试?
当我们要测试创建的沙盒中的文件、目录和链接时,我们需要知道外部目录的确切名称。此名称将在每次 FsTester 创建时都是唯一的。FsTester 在 perform_fs_test 函数的闭包参数中为我们提供此名称。
示例
use std::fs;
const YAML_DIR_WITH_TEST_FILE_FROM_CARGO_TOML: &str = "---
- directory:
name: test
content:
- file:
name: test_from_cargo.toml
content:
original_file: Cargo.toml
";
let tester = FsTester::new(YAML_DIR_WITH_TEST_FILE_FROM_CARGO_TOML, ".");
tester.perform_fs_test(|dirname| {
// ^^^^^^^ name with appended random at the end of name
let inner_file_name = format!("{}/{}", dirname, "test_from_cargo.toml");
let metadata = fs::metadata(inner_file_name)?;
assert!(metadata.len() > 0);
Ok(())
});
TODO
- 创建更多测试单元
依赖项
~2.3–3.5MB
~68K SLoC