bpo-43553: Improve `sqlite3` test coverage (GH-26886) · python/cpython@2c1ae09 · GitHub
Skip to content

Commit 2c1ae09

Browse files
author
Erlend Egeberg Aasland
authored
bpo-43553: Improve sqlite3 test coverage (GH-26886)
1 parent 9049ea5 commit 2c1ae09

4 files changed

Lines changed: 100 additions & 2 deletions

File tree

Lib/sqlite3/test/dbapi.py

Lines changed: 24 additions & 2 deletions

Lib/sqlite3/test/factory.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,8 @@ def test_sqlite_row_index(self):
123123
row[-3]
124124
with self.assertRaises(IndexError):
125125
row[2**1000]
126+
with self.assertRaises(IndexError):
127+
row[complex()] # index must be int or string
126128

127129
def test_sqlite_row_index_unicode(self):
128130
self.con.row_factory = sqlite.Row

Lib/sqlite3/test/types.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,43 @@ def test_caster_is_used(self):
381381
val = self.cur.fetchone()[0]
382382
self.assertEqual(type(val), float)
383383

384+
def test_missing_adapter(self):
385+
with self.assertRaises(sqlite.ProgrammingError):
386+
sqlite.adapt(1.) # No float adapter registered
387+
388+
def test_missing_protocol(self):
389+
with self.assertRaises(sqlite.ProgrammingError):
390+
sqlite.adapt(1, None)
391+
392+
def test_defect_proto(self):
393+
class DefectProto():
394+
def __adapt__(self):
395+
return None
396+
with self.assertRaises(sqlite.ProgrammingError):
397+
sqlite.adapt(1., DefectProto)
398+
399+
def test_defect_self_adapt(self):
400+
class DefectSelfAdapt(float):
401+
def __conform__(self, _):
402+
return None
403+
with self.assertRaises(sqlite.ProgrammingError):
404+
sqlite.adapt(DefectSelfAdapt(1.))
405+
406+
def test_custom_proto(self):
407+
class CustomProto():
408+
def __adapt__(self):
409+
return "adapted"
410+
self.assertEqual(sqlite.adapt(1., CustomProto), "adapted")
411+
412+
def test_adapt(self):
413+
val = 42
414+
self.assertEqual(float(val), sqlite.adapt(val))
415+
416+
def test_adapt_alt(self):
417+
alt = "other"
418+
self.assertEqual(alt, sqlite.adapt(1., None, alt))
419+
420+
384421
@unittest.skipUnless(zlib, "requires zlib")
385422
class BinaryConverterTests(unittest.TestCase):
386423
def convert(s):

Lib/sqlite3/test/userfunctions.py

Lines changed: 37 additions & 0 deletions

0 commit comments

Comments
 (0)