diff --git a/internal/db/db_test.go b/internal/db/db_test.go index 42c9bfc..4c127ca 100644 --- a/internal/db/db_test.go +++ b/internal/db/db_test.go @@ -5,6 +5,7 @@ import ( "errors" "io" "log/slog" + "os" "path/filepath" "testing" ) @@ -124,13 +125,22 @@ func TestOpen_BlankPath_异常(t *testing.T) { } } -func TestOpen_MissingParentDir_异常(t *testing.T) { +func TestOpen_CreatesParentDir_正常(t *testing.T) { t.Parallel() ctx := context.Background() - // Parent directory does not exist, so the connection cannot be established. - path := filepath.Join(t.TempDir(), "does-not-exist", "cyrene.db") - if _, err := Open(ctx, path, testLogger()); err == nil { - t.Fatalf("Open(%q) expected error for missing parent dir, got nil", path) + // Parent directory does not exist yet: Open must create it so a custom + // DATA_DIR works on first run. + dir := filepath.Join(t.TempDir(), "does-not-exist") + path := filepath.Join(dir, "cyrene.db") + db, err := Open(ctx, path, testLogger()) + if err != nil { + t.Fatalf("Open(%q) error creating parent dir: %v", path, err) + } + defer db.Close() + if fi, err := os.Stat(dir); err != nil { + t.Fatalf("parent dir not created: %v", err) + } else if !fi.IsDir() { + t.Fatalf("parent path is not a dir: %v", fi) } }