Address Serhiy's offline remark: coerce keys/values to bytes · python/cpython@e782fad (original) (raw)
`@@ -61,31 +61,31 @@ class ReadOnly(_SQLiteDbmTests):
`
61
61
`def setUp(self):
`
62
62
`super().setUp()
`
63
63
`with dbm_sqlite3.open(self.filename, "w") as db:
`
64
``
`-
db["key1"] = "value1"
`
65
``
`-
db["key2"] = "value2"
`
``
64
`+
db[b"key1"] = "value1"
`
``
65
`+
db[b"key2"] = "value2"
`
66
66
`self.db = dbm_sqlite3.open(self.filename, "r")
`
67
67
``
68
68
`def tearDown(self):
`
69
69
`self.db.close()
`
70
70
`super().tearDown()
`
71
71
``
72
72
`def test_readonly_read(self):
`
73
``
`-
self.assertEqual(self.db["key1"], "value1")
`
74
``
`-
self.assertEqual(self.db["key2"], "value2")
`
``
73
`+
self.assertEqual(self.db[b"key1"], b"value1")
`
``
74
`+
self.assertEqual(self.db[b"key2"], b"value2")
`
75
75
``
76
76
`def test_readonly_write(self):
`
77
77
`with self.assertRaises(dbm_sqlite3.error):
`
78
``
`-
self.db["new"] = "value"
`
``
78
`+
self.db[b"new"] = "value"
`
79
79
``
80
80
`def test_readonly_delete(self):
`
81
81
`with self.assertRaises(dbm_sqlite3.error):
`
82
``
`-
del self.db["key1"]
`
``
82
`+
del self.db[b"key1"]
`
83
83
``
84
84
`def test_readonly_keys(self):
`
85
``
`-
self.assertEqual(self.db.keys(), ["key1", "key2"])
`
``
85
`+
self.assertEqual(self.db.keys(), [b"key1", b"key2"])
`
86
86
``
87
87
`def test_readonly_iter(self):
`
88
``
`-
self.assertEqual([k for k in self.db], ["key1", "key2"])
`
``
88
`+
self.assertEqual([k for k in self.db], [b"key1", b"key2"])
`
89
89
``
90
90
``
91
91
`class ReadWrite(_SQLiteDbmTests):
`
`@@ -108,19 +108,19 @@ def test_readwrite_unique_key(self):
`
108
108
`self.db["key"] = "value"
`
109
109
`self.db["key"] = "other"
`
110
110
`keys, vals = self.db_content()
`
111
``
`-
self.assertEqual(keys, ["key"])
`
112
``
`-
self.assertEqual(vals, ["other"])
`
``
111
`+
self.assertEqual(keys, [b"key"])
`
``
112
`+
self.assertEqual(vals, [b"other"])
`
113
113
``
114
114
`def test_readwrite_delete(self):
`
115
115
`self.db["key"] = "value"
`
116
116
`self.db["new"] = "other"
`
117
117
``
118
``
`-
del self.db["new"]
`
``
118
`+
del self.db[b"new"]
`
119
119
`keys, vals = self.db_content()
`
120
``
`-
self.assertEqual(keys, ["key"])
`
121
``
`-
self.assertEqual(vals, ["value"])
`
``
120
`+
self.assertEqual(keys, [b"key"])
`
``
121
`+
self.assertEqual(vals, [b"value"])
`
122
122
``
123
``
`-
del self.db["key"]
`
``
123
`+
del self.db[b"key"]
`
124
124
`keys, vals = self.db_content()
`
125
125
`self.assertEqual(keys, [])
`
126
126
`self.assertEqual(vals, [])
`
`@@ -131,7 +131,7 @@ def test_readwrite_null_key(self):
`
131
131
``
132
132
`def test_readwrite_null_value(self):
`
133
133
`with self.assertRaises(dbm_sqlite3.error):
`
134
``
`-
self.db["key"] = None
`
``
134
`+
self.db[b"key"] = None
`
135
135
``
136
136
``
137
137
`class Misuse(_SQLiteDbmTests):
`
`@@ -147,7 +147,7 @@ def tearDown(self):
`
147
147
`def test_misuse_double_create(self):
`
148
148
`self.db["key"] = "value"
`
149
149
`with dbm_sqlite3.open(self.filename, "c") as db:
`
150
``
`-
self.assertEqual(db["key"], "value")
`
``
150
`+
self.assertEqual(db[b"key"], b"value")
`
151
151
``
152
152
`def test_misuse_double_close(self):
`
153
153
`self.db.close()
`
`@@ -159,13 +159,13 @@ def test_misuse_invalid_flag(self):
`
159
159
``
160
160
`def test_misuse_double_delete(self):
`
161
161
`self.db["key"] = "value"
`
162
``
`-
del self.db["key"]
`
``
162
`+
del self.db[b"key"]
`
163
163
`with self.assertRaises(KeyError):
`
164
``
`-
del self.db["key"]
`
``
164
`+
del self.db[b"key"]
`
165
165
``
166
166
`def test_misuse_invalid_key(self):
`
167
167
`with self.assertRaises(KeyError):
`
168
``
`-
self.db["key"]
`
``
168
`+
self.db[b"key"]
`
169
169
``
170
170
`def test_misuse_iter_close1(self):
`
171
171
`self.db["1"] = 1
`
`@@ -186,11 +186,11 @@ def test_misuse_iter_close2(self):
`
186
186
`def test_misuse_use_after_close(self):
`
187
187
`self.db.close()
`
188
188
`with self.assertRaises(dbm_sqlite3.error):
`
189
``
`-
self.db["read"]
`
``
189
`+
self.db[b"read"]
`
190
190
`with self.assertRaises(dbm_sqlite3.error):
`
191
``
`-
self.db["write"] = "value"
`
``
191
`+
self.db[b"write"] = "value"
`
192
192
`with self.assertRaises(dbm_sqlite3.error):
`
193
``
`-
del self.db["del"]
`
``
193
`+
del self.db[b"del"]
`
194
194
`with self.assertRaises(dbm_sqlite3.error):
`
195
195
`len(self.db)
`
196
196
`with self.assertRaises(dbm_sqlite3.error):
`
`@@ -208,7 +208,12 @@ def test_misuse_empty_filename(self):
`
208
208
``
209
209
`class DataTypes(_SQLiteDbmTests):
`
210
210
``
211
``
`-
dataset = 10, 2.5, "string", b"bytes"
`
``
211
`+
dataset = (
`
``
212
`+
(raw, coerced)
`
``
213
`+
(42, b"42"),
`
``
214
`+
(3.14, b"3.14"),
`
``
215
`+
("string", b"string"),
`
``
216
`+
)
`
212
217
``
213
218
`def setUp(self):
`
214
219
`super().setUp()
`
`@@ -219,16 +224,20 @@ def tearDown(self):
`
219
224
`super().tearDown()
`
220
225
``
221
226
`def test_datatypes_values(self):
`
222
``
`-
for value in self.dataset:
`
223
``
`-
with self.subTest(value=value):
`
224
``
`-
self.db["key"] = value
`
225
``
`-
self.assertEqual(self.db["key"], value)
`
``
227
`+
for raw, coerced in self.dataset:
`
``
228
`+
with self.subTest(raw=raw, coerced=coerced):
`
``
229
`+
self.db["key"] = raw
`
``
230
`+
self.assertEqual(self.db[b"key"], coerced)
`
226
231
``
227
232
`def test_datatypes_keys(self):
`
228
``
`-
for key in self.dataset:
`
229
``
`-
with self.subTest(key=key):
`
230
``
`-
self.db[key] = "value"
`
231
``
`-
self.assertEqual(self.db[key], "value")
`
``
233
`+
for raw, coerced in self.dataset:
`
``
234
`+
with self.subTest(raw=raw, coerced=coerced):
`
``
235
`+
self.db[raw] = "value"
`
``
236
`+
self.assertEqual(self.db[coerced], b"value")
`
``
237
`+
with self.assertRaises(KeyError):
`
``
238
`+
self.db[raw]
`
``
239
`+
with self.assertRaises(KeyError):
`
``
240
`+
del self.db[raw]
`
232
241
``
233
242
``
234
243
`class CorruptDatabase(_SQLiteDbmTests):
`
`@@ -284,9 +293,9 @@ def test_corrupt_readwrite(self):
`
284
293
`def test_corrupt_force_new(self):
`
285
294
`with closing(dbm_sqlite3.open(self.filename, "n")) as db:
`
286
295
`db["foo"] = "write"
`
287
``
`-
_ = db["foo"]
`
``
296
`+
_ = db[b"foo"]
`
288
297
`next(iter(db))
`
289
``
`-
del db["foo"]
`
``
298
`+
del db[b"foo"]
`
290
299
``
291
300
``
292
301
`if name == "main":
`