@@ -229,11 +229,15 @@ func TestVFSFile_WriteEnabled(t *testing.T) {
229229 createTestLTXFile (t , client , 1 , pageSize , 1 , map [uint32 ][]byte {1 : initialPage })
230230
231231 // Create VFSFile directly with write enabled
232+ tmpDir := t .TempDir ()
233+ bufferPath := tmpDir + "/write-buffer"
234+
232235 logger := slog .Default ()
233236 f := NewVFSFile (client , "test.db" , logger )
234237 f .writeEnabled = true
235238 f .dirty = make (map [uint32 ]int64 )
236239 f .syncInterval = 0
240+ f .bufferPath = bufferPath
237241
238242 if err := f .Open (); err != nil {
239243 t .Fatal (err )
@@ -639,6 +643,54 @@ func TestVFSFile_WriteBufferClearAfterSync(t *testing.T) {
639643 }
640644}
641645
646+ func TestVFSFile_OpenFailsWithInvalidBufferPath (t * testing.T ) {
647+ client := newWriteTestReplicaClient ()
648+
649+ pageSize := uint32 (4096 )
650+ initialPage := make ([]byte , pageSize )
651+ createTestLTXFile (t , client , 1 , pageSize , 1 , map [uint32 ][]byte {1 : initialPage })
652+
653+ logger := slog .Default ()
654+ f := NewVFSFile (client , "test.db" , logger )
655+ f .writeEnabled = true
656+ f .dirty = make (map [uint32 ]int64 )
657+ f .syncInterval = 0
658+ f .bufferPath = "/nonexistent/path/that/cannot/be/created/buffer"
659+
660+ err := f .Open ()
661+ if err == nil {
662+ f .Close ()
663+ t .Fatal ("expected Open to fail with invalid buffer path" )
664+ }
665+ }
666+
667+ func TestVFSFile_BufferFileAlwaysCreatedWhenWriteEnabled (t * testing.T ) {
668+ client := newWriteTestReplicaClient ()
669+
670+ pageSize := uint32 (4096 )
671+ initialPage := make ([]byte , pageSize )
672+ createTestLTXFile (t , client , 1 , pageSize , 1 , map [uint32 ][]byte {1 : initialPage })
673+
674+ tmpDir := t .TempDir ()
675+ bufferPath := tmpDir + "/write-buffer"
676+
677+ logger := slog .Default ()
678+ f := NewVFSFile (client , "test.db" , logger )
679+ f .writeEnabled = true
680+ f .dirty = make (map [uint32 ]int64 )
681+ f .syncInterval = 0
682+ f .bufferPath = bufferPath
683+
684+ if err := f .Open (); err != nil {
685+ t .Fatal (err )
686+ }
687+ defer f .Close ()
688+
689+ if f .bufferFile == nil {
690+ t .Fatal ("bufferFile should never be nil when writeEnabled is true" )
691+ }
692+ }
693+
642694func TestVFSFile_OpenNewDatabase (t * testing.T ) {
643695 // Test opening a VFSFile with write mode enabled when no LTX files exist (new database)
644696 client := newWriteTestReplicaClient ()
0 commit comments