@@ -159,7 +159,31 @@ def test_in_transaction(provider):
159159 cur .execute ("INSERT INTO users VALUES (?, ?)" , (2 , 'bob@example.com' ))
160160 assert conn .in_transaction == True
161161
162+ @pytest .mark .parametrize ("provider" , ["libsql-remote" , "libsql" , "sqlite" ])
163+ def test_fetch_expression (provider ):
164+ dbname = "/tmp/test.db" if provider == "libsql-remote" else ":memory:"
165+ try :
166+ conn = connect (provider , dbname )
167+ except Exception as e :
168+ pytest .skip (str (e ))
169+ cur = conn .cursor ()
170+ cur .execute ("DROP TABLE IF EXISTS users" )
171+ cur .execute ("CREATE TABLE users (id INTEGER, email TEXT)" )
172+ cur .execute ("INSERT INTO users VALUES (1, 'alice@example.com')" )
173+ res = cur .execute ("SELECT QUOTE(email) FROM users" )
174+ assert [("'alice@example.com'" ,)] == res .fetchall ()
175+
176+
162177def connect (provider , database , isolation_level = 'DEFERRED' ):
178+ if provider == "libsql-remote" :
179+ from urllib import request
180+ try :
181+ res = request .urlopen ("http://localhost:8080/v2" )
182+ except Exception as _ :
183+ raise Exception ("libsql-remote server is not running" )
184+ if res .getcode () != 200 :
185+ raise Exception ("libsql-remote server is not running" )
186+ return libsql_experimental .connect (database , sync_url = "http://localhost:8080" , auth_token = "" )
163187 if provider == "libsql" :
164188 return libsql_experimental .connect (database , isolation_level = isolation_level )
165189 if provider == "sqlite" :
0 commit comments