Skip to content

Commit f0af214

Browse files
committed
Add test for invalid custom serializer
1 parent e1b0584 commit f0af214

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

Lib/test/test_shelve.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,23 @@ def deserializer(data):
241241
deserializer=deserializer) as s:
242242
s["foo"] = "bar"
243243

244+
def test_custom_invalid_serializer(self):
245+
os.mkdir(self.dirname)
246+
self.addCleanup(os_helper.rmtree, self.dirname)
247+
248+
def serializer(obj, protocol=None):
249+
return ["value with invalid type"]
250+
251+
def deserializer(data):
252+
return data.decode("utf-8")
253+
254+
# Since the serializer returns None, dbm.error is raised
255+
# by dbm.sqlite3 and TypeError is raised by other backends.
256+
with self.assertRaises((TypeError, dbm.error)):
257+
with shelve.open(self.fn, serializer=serializer,
258+
deserializer=deserializer) as s:
259+
s["foo"] = "bar"
260+
244261
def test_custom_incomplete_deserializer(self):
245262
os.mkdir(self.dirname)
246263
self.addCleanup(os_helper.rmtree, self.dirname)

0 commit comments

Comments
 (0)