50 个版本 (20 个重大更新)
0.21.0 | 2024年7月1日 |
---|---|
0.20.2 | 2024年4月22日 |
0.19.1 | 2024年1月4日 |
0.19.0 | 2023年11月14日 |
0.1.0 | 2021年12月10日 |
#112 在 数据库接口
52,108 每月下载量
在 5 个包 中使用
120KB
2.5K SLoC
Sqllogictest
Sqllogictest 是一个用于验证 SQL 数据库正确性的测试框架。更多信息请见 GitHub 主页。
此包在 Rust 中实现了 sqllogictest 解析器和运行器库。
lib.rs
:
Sqllogictest 解析器和运行器。
此包支持超过原始 sqllogictest 格式的多种扩展。更多信息请见 README。
使用方法
有关如何使用此库支持的 CLI 工具,请参阅 README。
有关将此包作为库使用并实现自定义驱动程序的说明,请见下文。
为您的数据库结构实现 [DB
] 特性
struct MyDatabase {
// fields
}
#[derive(thiserror::Error, Debug, PartialEq, Eq, Clone)]
enum MyError {
// variants
}
impl sqllogictest::DB for MyDatabase {
type Error = MyError;
// Or define your own column type
type ColumnType = sqllogictest::DefaultColumnType;
fn run(&mut self, sql: &str) -> Result<sqllogictest::DBOutput<Self::ColumnType>, Self::Error> {
// TODO
Ok(sqllogictest::DBOutput::StatementComplete(0))
}
}
// Then create a `Runner` on your database instance, and run the tests:
let mut tester = sqllogictest::Runner::new(|| async {
let db = MyDatabase {
// fields
};
Ok(db)
});
let _res = tester.run_file("../tests/slt/basic.slt");
// You can also parse the script and execute the records separately:
let records = sqllogictest::parse_file("../tests/slt/basic.slt").unwrap();
for record in records {
let _res = tester.run(record);
}
依赖项
~8–19MB
~260K SLoC