2 个稳定版本
1.1.0 | 2020 年 4 月 29 日 |
---|---|
1.0.0 | 2020 年 1 月 24 日 |
#1034 在 文件系统
4,774 每月下载量
被 3 个 Crates 使用
29KB
656 行
test-cdylib
test-cdylib 是一个库,允许从测试代码动态链接到 cdylib 项目。这允许测试导出项的存在。
此库基于 dtolnay 的 TryBuild。
测试 cdylib 项目
cdylib 项目可以像这样测试
#[test]
fn api_test() {
let dylib_path = test_cdylib::build_current_project();
// Or load the shared library using any other method of your choice.
let dylib = dlopen::symbor::Library::open(&dylib_path).unwrap();
// Test the api as necessary.
}
这将在项目尚未构建的情况下构建当前项目,并返回编译库的路径。
测试构建 cdylib 的库
旨在帮助创建 cdylib 接口的库可以通过两种方式测试。首先是通过链接到示例,例如:
#[test]
fn api_gen_test() {
let dylib_path = test_cdylib::build_example("example");
// Or load the shared library using any other method of your choice.
let dylib = dlopen::symbor::Library::open(&dylib_path).unwrap();
// Test the api as necessary.
}
这将会构建示例并返回编译库的路径。
第二种方式是将文件作为 cdylib 构建,例如:
#[test]
fn api_gen_test() {
let dylib_path = test_cdylib::build_path("tests/cdylib/api_test.rs");
// Or load the shared library using any other method of your choice.
let dylib = dlopen::symbor::Library::open(&dylib_path).unwrap();
// Test the api as necessary.
}
这将会将指定的文件构建为 cdylib 项目,并返回编译库的路径。所有依赖项和开发依赖项都是可用的。请注意,这将导致所有依赖项被重新构建,这可能会显著减慢测试速度。
多个测试使用相同的库
可以通过使用 once_cell 来包含库的路径来使多个测试链接到同一个库,例如:
use once_cell::sync::Lazy;
use std::path::PathBuf;
static LIB_PATH: Lazy<PathBuf> = Lazy::new(|| test_cdylib::build_current_project());
可以对 build_example
和 build_path
都这样做。
许可证
根据您的选择,在 Apache 许可证版本 2.0 或 MIT 许可证下授权。
除非您明确声明,否则您有意提交给包含在此 crate 中并由您定义的 Apache-2.0 许可证的所有贡献,将按上述方式双重许可,没有任何附加条款或条件。
依赖项
~1–1.8MB
~39K SLoC