44import sys
55import libsql
66import pytest
7+ import tempfile
78
9+ @pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
10+ def test_connection_timeout (provider ):
11+ conn = connect (provider , ":memory:" , timeout = 1.0 )
12+ conn .close ()
813
914@pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
1015def test_connection_close (provider ):
@@ -163,7 +168,7 @@ def test_commit_and_rollback(provider):
163168
164169@pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
165170def test_autocommit (provider ):
166- conn = connect (provider , ":memory:" , None )
171+ conn = connect (provider , ":memory:" , timeout = 4 , isolation_level = None )
167172 assert conn .isolation_level == None
168173 assert conn .in_transaction == False
169174 cur = conn .cursor ()
@@ -182,7 +187,7 @@ def test_autocommit(provider):
182187@pytest .mark .skipif (sys .version_info < (3 , 12 ), reason = "requires python3.12 or higher" )
183188def test_connection_autocommit (provider ):
184189 # 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 )
186191 assert conn .isolation_level is None
187192 assert conn .autocommit == - 1
188193 cur = conn .cursor ()
@@ -193,7 +198,7 @@ def test_connection_autocommit(provider):
193198 res = cur .execute ("SELECT * FROM users" )
194199 assert (1 , "alice@example.com" ) == res .fetchone ()
195200
196- conn = connect (provider , ":memory:" , isolation_level = "DEFERRED" , autocommit = - 1 )
201+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = "DEFERRED" , autocommit = - 1 )
197202 assert conn .isolation_level == "DEFERRED"
198203 assert conn .autocommit == - 1
199204 cur = conn .cursor ()
@@ -205,7 +210,7 @@ def test_connection_autocommit(provider):
205210 assert (1 , "alice@example.com" ) == res .fetchone ()
206211
207212 # Test autocommit Enabled (True)
208- conn = connect (provider , ":memory:" , None , autocommit = True )
213+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = None , autocommit = True )
209214 assert conn .isolation_level == None
210215 assert conn .autocommit == True
211216 cur = conn .cursor ()
@@ -216,7 +221,7 @@ def test_connection_autocommit(provider):
216221 res = cur .execute ("SELECT * FROM users" )
217222 assert (1 , "bob@example.com" ) == res .fetchone ()
218223
219- conn = connect (provider , ":memory:" , isolation_level = "DEFERRED" , autocommit = True )
224+ conn = connect (provider , ":memory:" , timeout = 5 , isolation_level = "DEFERRED" , autocommit = True )
220225 assert conn .isolation_level == "DEFERRED"
221226 assert conn .autocommit == True
222227 cur = conn .cursor ()
@@ -228,7 +233,7 @@ def test_connection_autocommit(provider):
228233 assert (1 , "bob@example.com" ) == res .fetchone ()
229234
230235 # 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 )
232237 assert conn .isolation_level == "DEFERRED"
233238 assert conn .autocommit == False
234239 cur = conn .cursor ()
@@ -243,7 +248,7 @@ def test_connection_autocommit(provider):
243248
244249 # Test invalid autocommit value (should raise an error)
245250 with pytest .raises (ValueError ):
246- connect (provider , ":memory:" , None , autocommit = 999 )
251+ connect (provider , ":memory:" , timeout = 5 , isolation_level = None , autocommit = 999 )
247252
248253
249254@pytest .mark .parametrize ("provider" , ["libsql" , "sqlite" ])
@@ -316,7 +321,7 @@ def test_int64(provider):
316321 assert [(1 , 1099511627776 )] == res .fetchall ()
317322
318323
319- def connect (provider , database , isolation_level = "DEFERRED" , autocommit = - 1 ):
324+ def connect (provider , database , timeout = 5 , isolation_level = "DEFERRED" , autocommit = - 1 ):
320325 if provider == "libsql-remote" :
321326 from urllib import request
322327
@@ -332,21 +337,21 @@ def connect(provider, database, isolation_level="DEFERRED", autocommit=-1):
332337 if provider == "libsql" :
333338 if sys .version_info < (3 , 12 ):
334339 return libsql .connect (
335- database , isolation_level = isolation_level
340+ database , timeout = timeout , isolation_level = isolation_level
336341 )
337342 else :
338343 if autocommit == - 1 :
339344 autocommit = libsql .LEGACY_TRANSACTION_CONTROL
340345 return libsql .connect (
341- database , isolation_level = isolation_level , autocommit = autocommit
346+ database , timeout = timeout , isolation_level = isolation_level , autocommit = autocommit
342347 )
343348 if provider == "sqlite" :
344349 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 )
346351 else :
347352 if autocommit == - 1 :
348353 autocommit = sqlite3 .LEGACY_TRANSACTION_CONTROL
349354 return sqlite3 .connect (
350- database , isolation_level = isolation_level , autocommit = autocommit
355+ database , timeout = timeout , isolation_level = isolation_level , autocommit = autocommit
351356 )
352357 raise Exception (f"Provider `{ provider } ` is not supported" )
0 commit comments