diff options
Diffstat (limited to 'Lib/sqlite3/test/hooks.py')
| -rw-r--r-- | Lib/sqlite3/test/hooks.py | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/Lib/sqlite3/test/hooks.py b/Lib/sqlite3/test/hooks.py index a6161fa..9544149 100644 --- a/Lib/sqlite3/test/hooks.py +++ b/Lib/sqlite3/test/hooks.py @@ -47,9 +47,9 @@ class CollationTests(unittest.TestCase): except sqlite.ProgrammingError as e: pass + @unittest.skipIf(sqlite.sqlite_version_info < (3, 2, 1), + 'old SQLite versions crash on this test') def CheckCollationIsUsed(self): - if sqlite.version_info < (3, 2, 1): # old SQLite versions crash on this test - return def mycoll(x, y): # reverse order return -((x > y) - (x < y)) @@ -76,6 +76,25 @@ class CollationTests(unittest.TestCase): except sqlite.OperationalError as e: self.assertEqual(e.args[0].lower(), "no such collation sequence: mycoll") + def CheckCollationReturnsLargeInteger(self): + def mycoll(x, y): + # reverse order + return -((x > y) - (x < y)) * 2**32 + con = sqlite.connect(":memory:") + con.create_collation("mycoll", mycoll) + sql = """ + select x from ( + select 'a' as x + union + select 'b' as x + union + select 'c' as x + ) order by x collate mycoll + """ + result = con.execute(sql).fetchall() + self.assertEqual(result, [('c',), ('b',), ('a',)], + msg="the expected order was not returned") + def CheckCollationRegisterTwice(self): """ Register two different collation functions under the same name. @@ -168,6 +187,7 @@ class ProgressTests(unittest.TestCase): con = sqlite.connect(":memory:") action = 0 def progress(): + nonlocal action action = 1 return 0 con.set_progress_handler(progress, 1) |
