libsqlite3_hotbundle/
lib.rs1#[cfg(test)]
2mod test {
3 #[test]
4 fn test_bundled_version() {
5 assert_eq!(effective_sqlite_version(), Ok(bundled_sqlite_version()));
6 }
7
8 fn effective_sqlite_version() -> rusqlite::Result<String> {
9 Ok(rusqlite::Connection::open_in_memory()?.query_row(
10 "SELECT sqlite_version();",
11 [],
12 |row| Ok(row.get(0)?),
13 )?)
14 }
15
16 fn bundled_sqlite_version() -> String {
17 let header_text = include_str!("../sqlite3/sqlite3.h");
18 let mut expected_version = None;
19 for line in header_text.lines() {
20 let words: Vec<&str> = line.trim().split_ascii_whitespace().collect();
21 match words.as_slice() {
22 ["#define", "SQLITE_VERSION", version_str] => {
23 let Some(version_str) = version_str
24 .strip_prefix('"')
25 .and_then(|s| s.strip_suffix('"'))
26 else {
27 panic!("couldn't unwrap SQLITE_VERSION #define value {version_str:?}");
28 };
29 expected_version = Some(version_str.to_owned());
30 break;
31 }
32 _ => {}
33 }
34 }
35 expected_version.expect("couldn't find SQLITE_VERSION in the header")
36 }
37}