4
4
import sys
5
5
import libsql
6
6
import pytest
7
+ import tempfile
7
8
9
+ @pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
10
+ def test_connection_timeout (provider ):
11
+ conn = connect (provider , ":memory:" , timeout = 1.0 )
12
+ conn .close ()
8
13
9
14
@pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
10
15
def test_connection_close (provider ):
@@ -163,7 +168,7 @@ def test_commit_and_rollback(provider):
163
168
164
169
@pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
165
170
def test_autocommit (provider ):
166
- conn = connect (provider , ":memory:" , None )
171
+ conn = connect (provider , ":memory:" , timeout = 4 , isolation_level = None )
167
172
assert conn .isolation_level == None
168
173
assert conn .in_transaction == False
169
174
cur = conn .cursor ()
@@ -182,7 +187,7 @@ def test_autocommit(provider):
182
187
@pytest .mark .skipif (sys .version_info < (3 , 12 ), reason = "requires python3.12 or higher" )
183
188
def test_connection_autocommit (provider ):
184
189
# Test LEGACY_TRANSACTION_CONTROL (-1)
185
- conn = connect (provider , ":memory:" , None , autocommit = - 1 )
190
+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = None , autocommit = - 1 )
186
191
assert conn .isolation_level is None
187
192
assert conn .autocommit == - 1
188
193
cur = conn .cursor ()
@@ -193,7 +198,7 @@ def test_connection_autocommit(provider):
193
198
res = cur .execute ("SELECT * FROM users" )
194
199
assert (1 , "alice@example.com" ) == res .fetchone ()
195
200
196
- conn = connect (provider , ":memory:" , isolation_level = "DEFERRED" , autocommit = - 1 )
201
+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = "DEFERRED" , autocommit = - 1 )
197
202
assert conn .isolation_level == "DEFERRED"
198
203
assert conn .autocommit == - 1
199
204
cur = conn .cursor ()
@@ -205,7 +210,7 @@ def test_connection_autocommit(provider):
205
210
assert (1 , "alice@example.com" ) == res .fetchone ()
206
211
207
212
# Test autocommit Enabled (True)
208
- conn = connect (provider , ":memory:" , None , autocommit = True )
213
+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = None , autocommit = True )
209
214
assert conn .isolation_level == None
210
215
assert conn .autocommit == True
211
216
cur = conn .cursor ()
@@ -216,7 +221,7 @@ def test_connection_autocommit(provider):
216
221
res = cur .execute ("SELECT * FROM users" )
217
222
assert (1 , "bob@example.com" ) == res .fetchone ()
218
223
219
- conn = connect (provider , ":memory:" , isolation_level = "DEFERRED" , autocommit = True )
224
+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = "DEFERRED" , autocommit = True )
220
225
assert conn .isolation_level == "DEFERRED"
221
226
assert conn .autocommit == True
222
227
cur = conn .cursor ()
@@ -228,7 +233,7 @@ def test_connection_autocommit(provider):
228
233
assert (1 , "bob@example.com" ) == res .fetchone ()
229
234
230
235
# Test autocommit Disabled (False)
231
- conn = connect (provider , ":memory:" , isolation_level = "DEFERRED" , autocommit = False )
236
+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = "DEFERRED" , autocommit = False )
232
237
assert conn .isolation_level == "DEFERRED"
233
238
assert conn .autocommit == False
234
239
cur = conn .cursor ()
@@ -243,7 +248,7 @@ def test_connection_autocommit(provider):
243
248
244
249
# Test invalid autocommit value (should raise an error)
245
250
with pytest .raises (ValueError ):
246
- connect (provider , ":memory:" , None , autocommit = 999 )
251
+ connect (provider , ":memory:" , timeout = 5 , isolation_level = None , autocommit = 999 )
247
252
248
253
249
254
@pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
@@ -316,7 +321,7 @@ def test_int64(provider):
316
321
assert [(1 , 1099511627776 )] == res .fetchall ()
317
322
318
323
319
- def connect (provider , database , isolation_level = "DEFERRED" , autocommit = - 1 ):
324
+ def connect (provider , database , timeout = 5 , isolation_level = "DEFERRED" , autocommit = - 1 ):
320
325
if provider == "libsql-remote" :
321
326
from urllib import request
322
327
@@ -332,21 +337,21 @@ def connect(provider, database, isolation_level="DEFERRED", autocommit=-1):
332
337
if provider == "libsql" :
333
338
if sys .version_info < (3 , 12 ):
334
339
return libsql .connect (
335
- database , isolation_level = isolation_level
340
+ database , timeout = timeout , isolation_level = isolation_level
336
341
)
337
342
else :
338
343
if autocommit == - 1 :
339
344
autocommit = libsql .LEGACY_TRANSACTION_CONTROL
340
345
return libsql .connect (
341
- database , isolation_level = isolation_level , autocommit = autocommit
346
+ database , timeout = timeout , isolation_level = isolation_level , autocommit = autocommit
342
347
)
343
348
if provider == "sqlite" :
344
349
if sys .version_info < (3 , 12 ):
345
- return sqlite3 .connect (database , isolation_level = isolation_level )
350
+ return sqlite3 .connect (database , timeout = timeout , isolation_level = isolation_level )
346
351
else :
347
352
if autocommit == - 1 :
348
353
autocommit = sqlite3 .LEGACY_TRANSACTION_CONTROL
349
354
return sqlite3 .connect (
350
- database , isolation_level = isolation_level , autocommit = autocommit
355
+ database , timeout = timeout , isolation_level = isolation_level , autocommit = autocommit
351
356
)
352
357
raise Exception (f"Provider `{ provider } ` is not supported" )
0 commit comments