1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Copyright 2025 Stoolap Contributors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
use std::fs;
use stoolap::Database;
use tempfile::tempdir;
#[test]
fn test_wal_path_discovery() {
let dir = tempdir().unwrap();
let db_path = dir.path().join("test.db");
let dsn = format!("file://{}", db_path.display());
eprintln!("DB path: {:?}", db_path);
// Open database
let db = Database::open(&dsn).unwrap();
db.execute("CREATE TABLE test (id INTEGER PRIMARY KEY)", ())
.unwrap();
db.execute("INSERT INTO test VALUES (1)", ()).unwrap();
// List the entire temp directory recursively
eprintln!("\nAll files in temp directory:");
fn list_recursive(path: &std::path::Path, indent: usize) {
if let Ok(entries) = fs::read_dir(path) {
for entry in entries.flatten() {
let metadata = entry.metadata().unwrap();
let prefix = " ".repeat(indent);
if metadata.is_dir() {
eprintln!("{}{:?}/", prefix, entry.file_name());
list_recursive(&entry.path(), indent + 2);
} else {
eprintln!(
"{}{:?} ({} bytes)",
prefix,
entry.file_name(),
metadata.len()
);
}
}
}
}
list_recursive(dir.path(), 0);
db.close().unwrap();
eprintln!("\nAfter close:");
list_recursive(dir.path(), 0);
// Reopen and verify data
let db = Database::open(&dsn).unwrap();
let count: i64 = db.query_one("SELECT COUNT(*) FROM test", ()).unwrap();
assert_eq!(count, 1);
eprintln!("\n✅ Data persisted correctly (count={})", count);
}