4 个版本 (破坏性)
0.10.0 | 2023 年 5 月 23 日 |
---|---|
0.9.0 | 2023 年 5 月 22 日 |
0.7.0 | 2023 年 5 月 21 日 |
0.6.1 | 2023 年 5 月 13 日 |
0.4.5 |
|
#18 在 #tests
每月 74 次下载
33KB
350 行
cli-sandbox
cli-sandbox
cli-sandbox
是一个沙箱环境和测试实用工具,帮助您测试和调试 CLI 应用程序,灵感来自 Cargo 的 cargo-test-support
。
所有测试都获得自己的临时目录,在那里您可以创建文件、检查文件、测试程序与这些文件,并以各种方式检查程序的输出。
例如,如果您想检查您的 Python 到 Rust 编译器是否工作正确
use cli_sandbox::{project, WithStdout};
use std::error::Error;
#[test]
fn compiling() -> Result<(), Box<dyn Error>> {
cli_sandbox::init(); // Initialize the sandbox
let proj = project()?; // Create a project
// Let's create a file, and put in there some Python.
proj.new_file("my-program.py",
r#"def main():
print("Hi! this is a test")
main()"#)?;
let cmd = proj.command(["build"])?; // Execute the command "<YOUR COMMAND> build". Cli-sandbox will automatically get your command.
// Now, let's check that the transpiler created the file correctly.
proj.check_file("my-program.rs",
r#"fn main() {
println!("Hi! this is a test");
}
main()"#)?;
// And that the command stdout and stderr are correct.
cmd.with_stdout("File transpiled correctly! (`my-program.py` -> `my-program.rs`)");
// If the stderr isn't empty, we'll panic.
if !cmd.empty_stderr() {
panic!("Something went wrong! stderr isn't empty");
};
}
您还可以获取项目的路径(每次执行测试时都会更改,它们是临时的)。
安装
cargo add cli-sandbox --dev
使用方法
第一步是创建一个 Project
。您可以使用 Project::new()
或 project()
。这将为您创建一个临时目录,您可以将所有测试文件放在其中。
从项目,您可以执行命令,进行 I/O 操作,甚至通过获取项目的路径(Project::path()
)手动操作。
查看 项目的文档 获取更多信息。
功能
- 支持正则表达式来检查
stdout
和stderr
。 (特性:regex
) - 所有输出都非常美观,归功于
pretty-assertions
和better_panic
。 (特性:pretty
,也可以单独启用) - 微模糊功能 (特性:
fuzz
) - 测试
debug
或release
配置文件 (特性:dev
或release
)
贡献
查看 CONTRIBUTING.md
文件以获取有关如何贡献的一些指南。所有贡献都受到欢迎,任何大小的贡献者都欢迎,无论经验水平如何!
许可证
我们使用的是 MIT 许可证,更多信息请查看[LICENSE]文件。
依赖项
~5–15MB
~202K SLoC