Kaydet (Commit) 0e6cb2ea authored tarafından Aviv Palivoda's avatar Aviv Palivoda Kaydeden (comit) Berker Peksag

bpo-26187: Test that set_trace_callback() is not called multiple times (GH-461)

conn.set_trace_callback() shouldn't be called multiple times when the
schema is changing.

This has indirectly been fixed by using sqlite3_prepare_v2() in bpo-9303.
üst 2abfdf5a
......@@ -24,6 +24,8 @@
import unittest
import sqlite3 as sqlite
from test.support import TESTFN, unlink
class CollationTests(unittest.TestCase):
def CheckCreateCollationNotString(self):
con = sqlite.connect(":memory:")
......@@ -248,6 +250,24 @@ class TraceCallbackTests(unittest.TestCase):
"Unicode data %s garbled in trace callback: %s"
% (ascii(unicode_value), ', '.join(map(ascii, traced_statements))))
@unittest.skipIf(sqlite.sqlite_version_info < (3, 3, 9), "sqlite3_prepare_v2 is not available")
def CheckTraceCallbackContent(self):
# set_trace_callback() shouldn't produce duplicate content (bpo-26187)
traced_statements = []
def trace(statement):
traced_statements.append(statement)
queries = ["create table foo(x)",
"insert into foo(x) values(1)"]
self.addCleanup(unlink, TESTFN)
con1 = sqlite.connect(TESTFN, isolation_level=None)
con2 = sqlite.connect(TESTFN)
con1.set_trace_callback(trace)
cur = con1.cursor()
cur.execute(queries[0])
con2.execute("create table bar(x)")
cur.execute(queries[1])
self.assertEqual(traced_statements, queries)
def suite():
......
......@@ -307,6 +307,10 @@ Extension Modules
Library
-------
- bpo-26187: Test that sqlite3 trace callback is not called multiple
times when schema is changing. Indirectly fixed by switching to
use sqlite3_prepare_v2() in bpo-9303. Patch by Aviv Palivoda.
- bpo-29998: Pickling and copying ImportError now preserves name and path
attributes.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment