@@ -133,6 +133,9 @@ def tearDown(self):
133133 os_helper .rmtree (self .test_dir )
134134
135135 def test_open_readonly_dir_success_ro (self ):
136+ files = os .listdir (self .test_dir )
137+ self .assertEqual (sorted (files ), ["test.db" ])
138+
136139 os .chmod (self .test_dir , stat .S_IREAD | stat .S_IEXEC )
137140 with dbm_sqlite3 .open (self .db_path , "r" ) as db :
138141 self .assertEqual (db [b"key" ], b"value" )
@@ -148,6 +151,28 @@ def test_open_readonly_file_fail_rw(self):
148151 with self .assertRaises (OSError ):
149152 db [b"newkey" ] = b"newvalue"
150153
154+ def test_open_readonly_dir_fail_rw_missing_wal_shm (self ):
155+ for suffix in ("-wal" , "-shm" ):
156+ os_helper .unlink (self .db_path + suffix )
157+
158+ os .chmod (self .test_dir , stat .S_IREAD | stat .S_IEXEC )
159+
160+ with self .assertRaises (OSError ):
161+ db = dbm_sqlite3 .open (self .db_path , "w" )
162+ db [b"newkey" ] = b"newvalue"
163+ db .close ()
164+
165+ def test_open_readonly_dir_fail_rw_with_writable_db (self ):
166+ os .chmod (self .db_path , stat .S_IREAD | stat .S_IWRITE )
167+ for suffix in ("-wal" , "-shm" ):
168+ os_helper .unlink (self .db_path + suffix )
169+
170+ os .chmod (self .test_dir , stat .S_IREAD | stat .S_IEXEC )
171+
172+ with self .assertRaises (OSError ):
173+ db = dbm_sqlite3 .open (self .db_path , "w" )
174+ db [b"newkey" ] = b"newvalue"
175+ db .close ()
151176
152177
153178class ReadWrite (_SQLiteDbmTests ):
0 commit comments