package cachedb import ( "os" "path/filepath" "testing" ) // TestOpenCreatesTheFileInWALMode opens a new database, and then opens it // again, as a restart does. func TestOpenCreatesTheFileInWALMode(t *testing.T) { t.Parallel() dir := t.TempDir() for range 2 { db, err := Open(t.Context(), dir) if err != nil { t.Fatalf("Open: %v", err) } var mode string err = db.QueryRowContext(t.Context(), "PRAGMA journal_mode").Scan(&mode) if err != nil { t.Fatalf("reading the journal mode: %v", err) } if mode != "wal" { t.Errorf("journal mode %q, want wal", mode) } var rows int err = db.QueryRowContext(t.Context(), "SELECT COUNT(*) FROM hostnames").Scan(&rows) if err != nil { t.Fatalf("reading the hostnames table: %v", err) } err = db.Close() if err != nil { t.Fatalf("Close: %v", err) } } _, err := os.Stat(filepath.Join(dir, fileName)) if err != nil { t.Errorf("the file is not in the state directory: %v", err) } } // TestOpenFailsWhenTheDirectoryDoesNotExist checks that a state directory that // is not there is reported, not ignored. func TestOpenFailsWhenTheDirectoryDoesNotExist(t *testing.T) { t.Parallel() db, err := Open(t.Context(), filepath.Join(t.TempDir(), "missing")) if err == nil { _ = db.Close() t.Fatal("Open succeeded in a directory that does not exist") } }