mirror of
https://github.com/simonw/sqlite-utils.git
synced 2026-09-27 20:34:12 +02:00
Test for with db.tracer() contextmanager
This commit is contained in:
parent
a021b6b62e
commit
31bea2ac61
2 changed files with 29 additions and 1 deletions
|
|
@ -130,7 +130,7 @@ class Database:
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def tracer(self, tracer=None):
|
def tracer(self, tracer=None):
|
||||||
prev_tracer = self.tracer
|
prev_tracer = self._tracer
|
||||||
self._tracer = tracer or print
|
self._tracer = tracer or print
|
||||||
try:
|
try:
|
||||||
yield self
|
yield self
|
||||||
|
|
|
||||||
|
|
@ -31,3 +31,31 @@ def test_tracer():
|
||||||
("Cleopaws",),
|
("Cleopaws",),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def test_with_tracer():
|
||||||
|
collected = []
|
||||||
|
tracer = lambda sql, params: collected.append((sql, params))
|
||||||
|
|
||||||
|
db = Database(memory=True)
|
||||||
|
|
||||||
|
db["dogs"].insert({"name": "Cleopaws"})
|
||||||
|
db["dogs"].enable_fts(["name"])
|
||||||
|
|
||||||
|
assert len(collected) == 0
|
||||||
|
|
||||||
|
with db.tracer(tracer):
|
||||||
|
db["dogs"].search("Cleopaws")
|
||||||
|
|
||||||
|
assert len(collected) == 2
|
||||||
|
assert collected == [
|
||||||
|
("select name from sqlite_master where type = 'view'", None),
|
||||||
|
(
|
||||||
|
'select * from "dogs" where rowid in (\n select rowid from [dogs_fts]\n where [dogs_fts] match :search\n)\norder by rowid',
|
||||||
|
("Cleopaws",),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
||||||
|
# Outside the with block collected should not be appended to
|
||||||
|
db["dogs"].insert({"name": "Cleopaws"})
|
||||||
|
assert len(collected) == 2
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue