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":

`