use std::fs;
use stoolap::Database;
use tempfile::tempdir;
#[test]
fn test_wal_file_creation() {
println!("Testing WAL creation...");
let dir = tempdir().unwrap();
let db_path = dir.path().join("test.db");
let wal_path = db_path.with_extension("db.wal");
let dsn = format!("file://{}", db_path.display());
eprintln!("DB path: {:?}", db_path);
eprintln!("Expected WAL path: {:?}", wal_path);
{
let db = Database::open(&dsn).unwrap();
eprintln!("Directory contents after open:");
for entry in fs::read_dir(dir.path()).unwrap() {
let entry = entry.unwrap();
eprintln!(
" {:?} - {} bytes",
entry.file_name(),
entry.metadata().unwrap().len()
);
}
db.execute("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)", ())
.unwrap();
eprintln!("Directory contents after CREATE:");
for entry in fs::read_dir(dir.path()).unwrap() {
let entry = entry.unwrap();
eprintln!(
" {:?} - {} bytes",
entry.file_name(),
entry.metadata().unwrap().len()
);
}
db.execute("INSERT INTO test (id, value) VALUES (1, 'hello')", ())
.unwrap();
eprintln!("Directory contents after INSERT:");
for entry in fs::read_dir(dir.path()).unwrap() {
let entry = entry.unwrap();
eprintln!(
" {:?} - {} bytes",
entry.file_name(),
entry.metadata().unwrap().len()
);
}
db.close().unwrap();
}
eprintln!("Directory contents after close:");
for entry in fs::read_dir(dir.path()).unwrap() {
let entry = entry.unwrap();
eprintln!(
" {:?} - {} bytes",
entry.file_name(),
entry.metadata().unwrap().len()
);
}
eprintln!("Reopening database...");
let db = Database::open(&dsn).unwrap();
let count: i64 = db.query_one("SELECT COUNT(*) FROM test", ()).unwrap();
eprintln!("Count after reopen: {}", count);
assert_eq!(count, 1, "Data should persist after reopen");
}