Skip to content

Commit c4c8065

Browse files
committed
Test: improve read-only filesystem tests for dbm.sqlite3 per review feedback
1 parent 73d9e24 commit c4c8065

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

Lib/test/test_dbm_sqlite3.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

153178
class ReadWrite(_SQLiteDbmTests):

0 commit comments

Comments
 (0)