Author: Brian Kearns <[email protected]>
Branch:
Changeset: r63090:3b60aa181915
Date: 2013-04-06 00:45 -0400
http://bitbucket.org/pypy/pypy/changeset/3b60aa181915/
Log: simplify sqlite tests by providing a funcarg that automatically
connects/closes
diff --git a/pypy/module/test_lib_pypy/test_sqlite3.py
b/pypy/module/test_lib_pypy/test_sqlite3.py
--- a/pypy/module/test_lib_pypy/test_sqlite3.py
+++ b/pypy/module/test_lib_pypy/test_sqlite3.py
@@ -3,10 +3,14 @@
import pytest
from lib_pypy import _sqlite3
-def test_list_ddl():
+def pytest_funcarg__con(request):
+ con = _sqlite3.connect(':memory:')
+ request.addfinalizer(lambda: con.close())
+ return con
+
+def test_list_ddl(con):
"""From issue996. Mostly just looking for lack of exceptions."""
- connection = _sqlite3.connect(':memory:')
- cursor = connection.cursor()
+ cursor = con.cursor()
cursor.execute('CREATE TABLE foo (bar INTEGER)')
result = list(cursor)
assert result == []
@@ -17,8 +21,7 @@
result = list(cursor)
assert result == [(42,)]
-def test_total_changes_after_close():
- con = _sqlite3.connect(':memory:')
+def test_total_changes_after_close(con):
con.close()
pytest.raises(_sqlite3.ProgrammingError, "con.total_changes")
@@ -31,25 +34,22 @@
e = pytest.raises(_sqlite3.ProgrammingError, "con.cursor()")
assert '__init__' in e.value.message
-def test_cursor_check_init():
+def test_cursor_check_init(con):
class Cursor(_sqlite3.Cursor):
def __init__(self, name):
pass
- con = _sqlite3.connect(":memory:")
cur = Cursor(con)
e = pytest.raises(_sqlite3.ProgrammingError, "cur.execute('select 1')")
assert '__init__' in e.value.message
-def test_connection_after_close():
- con = _sqlite3.connect(':memory:')
+def test_connection_after_close(con):
pytest.raises(TypeError, "con()")
con.close()
# raises ProgrammingError because should check closed before check args
pytest.raises(_sqlite3.ProgrammingError, "con()")
-def test_cursor_iter():
- con = _sqlite3.connect(':memory:')
+def test_cursor_iter(con):
cur = con.cursor()
with pytest.raises(StopIteration):
next(cur)
@@ -81,8 +81,7 @@
with pytest.raises(StopIteration):
next(cur)
-def test_cursor_after_close():
- con = _sqlite3.connect(':memory:')
+def test_cursor_after_close(con):
cur = con.execute('select 1')
cur.close()
con.close()
@@ -127,11 +126,10 @@
finally:
resource.setrlimit(resource.RLIMIT_NOFILE, limit)
-def test_on_conflict_rollback_executemany():
+def test_on_conflict_rollback_executemany(con):
major, minor, micro = _sqlite3.sqlite_version.split('.')
if (int(major), int(minor), int(micro)) < (3, 2, 2):
pytest.skip("requires sqlite3 version >= 3.2.2")
- con = _sqlite3.connect(":memory:")
con.execute("create table foo(x, unique(x) on conflict rollback)")
con.execute("insert into foo(x) values (1)")
try:
@@ -143,10 +141,8 @@
con.commit()
except _sqlite3.OperationalError:
pytest.fail("_sqlite3 knew nothing about the implicit ROLLBACK")
- con.close()
-def test_statement_arg_checking():
- con = _sqlite3.connect(':memory:')
+def test_statement_arg_checking(con):
with pytest.raises(_sqlite3.Warning) as e:
con(123)
assert str(e.value) == 'SQL is of wrong type. Must be string or unicode.'
@@ -160,8 +156,7 @@
con.executescript(123)
assert str(e.value) == 'script argument must be unicode or string.'
-def test_statement_param_checking():
- con = _sqlite3.connect(':memory:')
+def test_statement_param_checking(con):
con.execute('create table foo(x)')
con.execute('insert into foo(x) values (?)', [2])
con.execute('insert into foo(x) values (?)', (2,))
@@ -179,10 +174,8 @@
with pytest.raises(ValueError) as e:
con.execute('insert into foo(x) values (?)', 2)
assert str(e.value) == 'parameters are of unsupported type'
- con.close()
-def test_explicit_begin():
- con = _sqlite3.connect(':memory:')
+def test_explicit_begin(con):
con.execute('BEGIN')
con.execute('BEGIN ')
con.execute('BEGIN')
@@ -190,31 +183,26 @@
con.execute('BEGIN')
con.commit()
-def test_row_factory_use():
- con = _sqlite3.connect(':memory:')
+def test_row_factory_use(con):
con.row_factory = 42
con.execute('select 1')
-def test_returning_blob_must_own_memory():
+def test_returning_blob_must_own_memory(con):
import gc
- con = _sqlite3.connect(":memory:")
con.create_function("returnblob", 0, lambda: buffer("blob"))
- cur = con.cursor()
- cur.execute("select returnblob()")
+ cur = con.execute("select returnblob()")
val = cur.fetchone()[0]
for i in range(5):
gc.collect()
got = (val[0], val[1], val[2], val[3])
assert got == ('b', 'l', 'o', 'b')
-def test_description_after_fetchall():
- con = _sqlite3.connect(":memory:")
+def test_description_after_fetchall(con):
cur = con.cursor()
cur.execute("select 42").fetchall()
assert cur.description is not None
-def test_executemany_lastrowid():
- con = _sqlite3.connect(':memory:')
+def test_executemany_lastrowid(con):
cur = con.cursor()
cur.execute("create table test(a)")
cur.executemany("insert into test values (?)", [[1], [2], [3]])
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit