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数据库接口

Download history 10112/week @ 2024-04-29 12054/week @ 2024-05-06 13997/week @ 2024-05-13 13531/week @ 2024-05-20 12705/week @ 2024-05-27 12118/week @ 2024-06-03 11500/week @ 2024-06-10 13196/week @ 2024-06-17 11726/week @ 2024-06-24 14330/week @ 2024-07-01 15288/week @ 2024-07-08 13279/week @ 2024-07-15 13320/week @ 2024-07-22 12139/week @ 2024-07-29 13077/week @ 2024-08-05 12579/week @ 2024-08-12

52,108 每月下载量
5 个包 中使用

MIT/Apache 协议

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