45 releases (19 breaking)

0.20.2 Apr 22, 2024
0.19.1 Jan 4, 2024
0.19.0 Nov 14, 2023
0.15.2 Jul 31, 2023
0.1.0 Dec 10, 2021

#145 in Database interfaces

Download history 17561/week @ 2024-01-25 15022/week @ 2024-02-01 9059/week @ 2024-02-08 11446/week @ 2024-02-15 14984/week @ 2024-02-22 17588/week @ 2024-02-29 14320/week @ 2024-03-07 16888/week @ 2024-03-14 15001/week @ 2024-03-21 15642/week @ 2024-03-28 12567/week @ 2024-04-04 12792/week @ 2024-04-11 11840/week @ 2024-04-18 13539/week @ 2024-04-25 9477/week @ 2024-05-02 11540/week @ 2024-05-09

48,630 downloads per month
Used in 5 crates

MIT/Apache

115KB
2.5K SLoC

Sqllogictest

Sqllogictest is a testing framework to verify the correctness of an SQL database. See GitHub Homepage for more information.

This crate implements a sqllogictest parser and runner library in Rust.


lib.rs:

Sqllogictest parser and runner.

Usage

Implement [DB] trait for your database structure:

struct Database {...}

impl sqllogictest::DB for Database {
    type Error = ...;
    fn run(&self, sql: &str) -> Result<String, Self::Error> {
        ...
    }
}

Create a Runner on your database instance, and then run the script:

let mut tester = sqllogictest::Runner::new(Database::new());
let script = std::fs::read_to_string("script.slt").unwrap();
tester.run_script(&script);

You can also parse the script and execute the records separately:

let records = sqllogictest::parse(&script).unwrap();
for record in records {
    tester.run(record);
}

Dependencies

~8–19MB
~257K SLoC