Server : LiteSpeed
System : Linux server51.dnsbootclub.com 4.18.0-553.62.1.lve.el8.x86_64 #1 SMP Mon Jul 21 17:50:35 UTC 2025 x86_64
User : nandedex ( 1060)
PHP Version : 8.1.33
Disable Function : NONE
Directory :  /opt/cppython/lib/python3.8/sqlite3/test/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]


Current File : //opt/cppython/lib/python3.8/sqlite3/test/__pycache__/dbapi.cpython-38.opt-1.pyc
U

?��g��@s�ddlZddlZddlZddlmZmZGdd�dej�ZGdd�dej�Z	Gdd�dej�Z
Gd	d
�d
ej�ZGdd�dej�ZGd
d�dej�Z
Gdd�dej�ZGdd�dej�ZGdd�dej�Zdd�Zdd�Zedkr�e�dS)�N)�TESTFN�unlinkc@steZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�ModuleTestscCs|�tjddtj�dS)Nz2.0zapilevel is %s, should be 2.0)�assertEqual�sqliteZapilevel��self�r	�1/opt/cppython/lib/python3.8/sqlite3/test/dbapi.py�
CheckAPILevel s
�zModuleTests.CheckAPILevelcCs|�tjddtj�dS)N�zthreadsafety is %d, should be 1)rrZthreadsafetyrr	r	r
�CheckThreadSafety$s
�zModuleTests.CheckThreadSafetycCs|�tjddtj�dS)NZqmarkz%paramstyle is '%s', should be 'qmark')rrZ
paramstylerr	r	r
�CheckParamStyle(s

��zModuleTests.CheckParamStylecCs|�ttjt�d�dS)Nz&Warning is not a subclass of Exception)�
assertTrue�
issubclassr�Warning�	Exceptionrr	r	r
�CheckWarning-s�zModuleTests.CheckWarningcCs|�ttjt�d�dS)Nz$Error is not a subclass of Exception)rrr�Errorrrr	r	r
�
CheckError1s�zModuleTests.CheckErrorcCs|�ttjtj�d�dS)Nz)InterfaceError is not a subclass of Error)rrr�InterfaceErrorrrr	r	r
�CheckInterfaceError5s�zModuleTests.CheckInterfaceErrorcCs|�ttjtj�d�dS)Nz(DatabaseError is not a subclass of Error)rrr�
DatabaseErrorrrr	r	r
�CheckDatabaseError9s�zModuleTests.CheckDatabaseErrorcCs|�ttjtj�d�dS)Nz,DataError is not a subclass of DatabaseError)rrr�	DataErrorrrr	r	r
�CheckDataError=s�zModuleTests.CheckDataErrorcCs|�ttjtj�d�dS)Nz3OperationalError is not a subclass of DatabaseError)rrr�OperationalErrorrrr	r	r
�CheckOperationalErrorAs�z!ModuleTests.CheckOperationalErrorcCs|�ttjtj�d�dS)Nz1IntegrityError is not a subclass of DatabaseError)rrr�IntegrityErrorrrr	r	r
�CheckIntegrityErrorEs�zModuleTests.CheckIntegrityErrorcCs|�ttjtj�d�dS)Nz0InternalError is not a subclass of DatabaseError)rrr�
InternalErrorrrr	r	r
�CheckInternalErrorIs�zModuleTests.CheckInternalErrorcCs|�ttjtj�d�dS)Nz3ProgrammingError is not a subclass of DatabaseError)rrr�ProgrammingErrorrrr	r	r
�CheckProgrammingErrorMs�z!ModuleTests.CheckProgrammingErrorcCs|�ttjtj�d�dS)Nz4NotSupportedError is not a subclass of DatabaseError)rrr�NotSupportedErrorrrr	r	r
�CheckNotSupportedErrorQs

��z"ModuleTests.CheckNotSupportedErrorN)�__name__�
__module__�__qualname__rr
rrrrrrrrr!r#r%r	r	r	r
rsrc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Ze�ejdkd�dd ��Zd!S)"�ConnectionTestscCs0t�d�|_|j��}|�d�|�dd�dS)N�:memory:z4create table test(id integer primary key, name text)�!insert into test(name) values (?)��foo)r�connect�cx�cursor�execute�r�cur	r	r
�setUpXs

zConnectionTests.setUpcCs|j��dS�N�r/�closerr	r	r
�tearDown^szConnectionTests.tearDowncCs|j��dSr5�r/�commitrr	r	r
�CheckCommitaszConnectionTests.CheckCommitcCs|j��|j��dS)zV
        A commit should also work when no changes were made to the database.
        Nr9rr	r	r
�CheckCommitAfterNoChangesds
z)ConnectionTests.CheckCommitAfterNoChangescCs|j��dSr5�r/�rollbackrr	r	r
�
CheckRollbackkszConnectionTests.CheckRollbackcCs|j��|j��dS)zX
        A rollback should also work when no changes were made to the database.
        Nr=rr	r	r
�CheckRollbackAfterNoChangesns
z+ConnectionTests.CheckRollbackAfterNoChangescCs|j��}dSr5)r/r0r2r	r	r
�CheckCursoruszConnectionTests.CheckCursorc	Cs*d}|�tj��t�|�}W5QRXdS)Nz/foo/bar/bla/23534/mydb.db)�assertRaisesrrr.)rZYOU_CANNOT_OPEN_THIS�conr	r	r
�CheckFailedOpenxszConnectionTests.CheckFailedOpencCs|j��dSr5r6rr	r	r
�
CheckClose}szConnectionTests.CheckClosecCs�|�|jjtj�|�|jjtj�|�|jjtj�|�|jjtj�|�|jjtj�|�|jjtj�|�|jj	tj	�|�|jj
tj
�|�|jjtj�|�|jjtj�dSr5)
rr/rrrrrrrrr r"r$rr	r	r
�CheckExceptions�szConnectionTests.CheckExceptionscCs�t�d�}|��}|�|jd�|�d�|�|jd�|�dd�|�|jd�|�ddg�|��}|�|jd�|��|�|jd�|�ddg�|��}|�|jd�dS)	Nr*Fz?create table transactiontest(id integer primary key, name text)z,insert into transactiontest(name) values (?)r,Tz-select name from transactiontest where name=?r-)rr.r0r�in_transactionr1�fetchoner:)rr/r3�rowr	r	r
�CheckInTransaction�s

z"ConnectionTests.CheckInTransactionc	Cs"|�t��d|j_W5QRXdS)NT)rB�AttributeErrorr/rGrr	r	r
�CheckInTransactionRO�sz$ConnectionTests.CheckInTransactionROc	CsD|�tt�Gdd�d�}|�}t�|��}|�d�W5QRXdS)z| Checks that we can successfully connect to a database using an object that
            is PathLike, i.e. has __fspath__(). c@seZdZdd�ZdS)z9ConnectionTests.CheckOpenWithPathLikeObject.<locals>.PathcSstSr5)rrr	r	r
�
__fspath__�szDConnectionTests.CheckOpenWithPathLikeObject.<locals>.Path.__fspath__N)r&r'r(rMr	r	r	r
�Path�srN�create table test(id integer)N)�
addCleanuprrrr.r1)rrN�pathr/r	r	r
�CheckOpenWithPathLikeObject�s
z+ConnectionTests.CheckOpenWithPathLikeObjectc
Cs�tjdkr4|�tj��tjddd�W5QRXdS|�tt�t�t��}|�d�W5QRXtjdtdd��}|�d�W5QRXtjdtddd��(}|�tj	��|�d	�W5QRXW5QRXdS)
N)��rTr*T)ZurirOzfile:zinsert into test(id) values(0)z?mode=rozinsert into test(id) values(1))
r�sqlite_version_inforBr$r.rPrrr1r)rr/r	r	r
�CheckOpenUri�s
zConnectionTests.CheckOpenUri)rSrSrz&needs sqlite versions older than 3.3.1c	Cs<|�tj��}tjddd�W5QRX|�t|j�d�dS)Nr*F)Zcheck_same_threadz shared connections not available)rBrr$r.r�str�	exception�r�cmr	r	r
� CheckSameThreadErrorOnOldVersion�sz0ConnectionTests.CheckSameThreadErrorOnOldVersionN)r&r'r(r4r8r;r<r?r@rArDrErFrJrLrRrV�unittestZskipIfrrUr[r	r	r	r
r)Vs$
�r)c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7d8�Zd9d:�Zd;d<�Z d=d>�Z!d?d@�Z"dAdB�Z#dCdD�Z$dEdF�Z%dGdH�Z&dIdJ�Z'dKdL�Z(dMdN�Z)dOdP�Z*dQdR�Z+dSdT�Z,dUdV�Z-dWdX�Z.dYdZ�Z/d[d\�Z0d]d^�Z1d_d`�Z2dadb�Z3dcdd�Z4dedf�Z5dgS)h�CursorTestscCs6t�d�|_|j��|_|j�d�|j�dd�dS)Nr*z\create table test(id integer primary key, name text, income number, unique_test text unique)r+r,�rr.r/r0r3r1rr	r	r
r4�s�zCursorTests.setUpcCs|j��|j��dSr5�r3r7r/rr	r	r
r8�s
zCursorTests.tearDowncCs|j�d�dS)N�delete from test�r3r1rr	r	r
�CheckExecuteNoArgs�szCursorTests.CheckExecuteNoArgsc	Cs(|�tj��|j�d�W5QRXdS)Nzselect asdf)rBrrr3r1rr	r	r
�CheckExecuteIllegalSql�sz"CursorTests.CheckExecuteIllegalSqlc	Cs(|�tj��|j�d�W5QRXdS)Nzselect 5+4; select 4+5)rBrrr3r1rr	r	r
�CheckExecuteTooMuchSql�sz"CursorTests.CheckExecuteTooMuchSqlcCs|j�d�dS)Nzselect 5+4; -- foo barrarr	r	r
�CheckExecuteTooMuchSql2�sz#CursorTests.CheckExecuteTooMuchSql2cCs|j�d�dS)NzT
            select 5+4;

            /*
            foo
            */
            rarr	r	r
�CheckExecuteTooMuchSql3�sz#CursorTests.CheckExecuteTooMuchSql3c	Cs&|�t��|j�d�W5QRXdS�N�*)rB�
ValueErrorr3r1rr	r	r
�CheckExecuteWrongSqlArg�sz#CursorTests.CheckExecuteWrongSqlArgcCs|j�dd�dS)N�insert into test(id) values (?))rhrarr	r	r
�CheckExecuteArgInt�szCursorTests.CheckExecuteArgIntcCs|j�dd�dS)N�#insert into test(income) values (?))gq=
ף��@rarr	r	r
�CheckExecuteArgFloat�sz CursorTests.CheckExecuteArgFloatcCs|j�dd�dS)Nr+)ZHugorarr	r	r
�CheckExecuteArgString�sz!CursorTests.CheckExecuteArgStringcCs@|j�dd�|j�d|jjf�|j��}|�|dd�dS)Nr+)�Hugoz select name from test where id=?rrp)r3r1�	lastrowidrHr�rrIr	r	r
�!CheckExecuteArgStringWithZeroByte�s
z-CursorTests.CheckExecuteArgStringWithZeroBytec	Cs:|�t��}|j�dd�W5QRX|�t|j�d�dS)Nrkrhz"parameters are of unsupported type)rBrir3r1rrWrXrYr	r	r
�CheckExecuteNonIterable�sz#CursorTests.CheckExecuteNonIterablec	Cs*|�tj��|j�dd�W5QRXdS)Nrk)�ZEgon�rBrr"r3r1rr	r	r
�CheckExecuteWrongNoOfArgs1sz&CursorTests.CheckExecuteWrongNoOfArgs1c	Cs(|�tj��|j�d�W5QRXdS�Nrkrvrr	r	r
�CheckExecuteWrongNoOfArgs2sz&CursorTests.CheckExecuteWrongNoOfArgs2c	Cs(|�tj��|j�d�W5QRXdSrxrvrr	r	r
�CheckExecuteWrongNoOfArgs3sz&CursorTests.CheckExecuteWrongNoOfArgs3cCs:|j�d�|j�ddg�|j��}|�|dd�dS)N�%insert into test(name) values ('foo')�"select name from test where name=?r-r�r3r1rHrrrr	r	r
�CheckExecuteParamLists
z!CursorTests.CheckExecuteParamListcCsHGdd�d�}|j�d�|j�d|��|j��}|�|dd�dS)Nc@seZdZdd�Zdd�ZdS)z0CursorTests.CheckExecuteParamSequence.<locals>.LcSsdS)Nrr	rr	r	r
�__len__sz8CursorTests.CheckExecuteParamSequence.<locals>.L.__len__cSsdS�Nr-r	�r�xr	r	r
�__getitem__sz<CursorTests.CheckExecuteParamSequence.<locals>.L.__getitem__N�r&r'r(rr�r	r	r	r
�Lsr�r{r|rr-r})rr�rIr	r	r
�CheckExecuteParamSequences

z%CursorTests.CheckExecuteParamSequencec	CsDGdd�d�}|j�d�|�t��|j�d|��W5QRXdS)Nc@seZdZdd�Zdd�ZdS)z6CursorTests.CheckExecuteParamSequenceBadLen.<locals>.LcSsdddS)Nrrr	rr	r	r
r&sz>CursorTests.CheckExecuteParamSequenceBadLen.<locals>.L.__len__cSst�dSr5)�AssertionError)Zslfr�r	r	r
r�(szBCursorTests.CheckExecuteParamSequenceBadLen.<locals>.L.__getitem__Nr�r	r	r	r
r�%sr�r{r|)r3r1rB�ZeroDivisionError)rr�r	r	r
�CheckExecuteParamSequenceBadLen#sz+CursorTests.CheckExecuteParamSequenceBadLencCs<|j�d�|j�dddi�|j��}|�|dd�dS)Nr{�&select name from test where name=:name�namer-rr}rrr	r	r
�CheckExecuteDictMapping/s
z#CursorTests.CheckExecuteDictMappingcCsJGdd�dt�}|j�d�|j�d|��|j��}|�|dd�dS)Nc@seZdZdd�ZdS)z6CursorTests.CheckExecuteDictMapping_Mapping.<locals>.DcSsdSr�r	)r�keyr	r	r
�__missing__7szBCursorTests.CheckExecuteDictMapping_Mapping.<locals>.D.__missing__N)r&r'r(r�r	r	r	r
�D6sr�r{r�rr-)�dictr3r1rHr)rr�rIr	r	r
�CheckExecuteDictMapping_Mapping5s

z+CursorTests.CheckExecuteDictMapping_Mappingc	Cs:|j�d�|�tj��|j�dddi�W5QRXdS)Nr{z1select name from test where name=:name and id=:idr�r-�r3r1rBrr"rr	r	r
�$CheckExecuteDictMappingTooLittleArgs?sz0CursorTests.CheckExecuteDictMappingTooLittleArgsc	Cs4|j�d�|�tj��|j�d�W5QRXdS)Nr{r�r�rr	r	r
�CheckExecuteDictMappingNoArgsDsz)CursorTests.CheckExecuteDictMappingNoArgsc	Cs:|j�d�|�tj��|j�dddi�W5QRXdS)Nr{r|r�r-r�rr	r	r
�CheckExecuteDictMappingUnnamedIsz*CursorTests.CheckExecuteDictMappingUnnamedcCs|j��dSr5)r3r7rr	r	r
rENszCursorTests.CheckClosecCsD|j�d�|j�d�|j�d�|j�d�|�|jjd�dS)Nr`r{zupdate test set name='bar'��r3r1r�rowcountrr	r	r
�CheckRowcountExecuteQs
z CursorTests.CheckRowcountExecutecCs |j�d�|�|jjd�dS)z�
        pysqlite does not know the rowcount of SELECT statements, because we
        don't fetch all rows after executing the select statement. The rowcount
        has thus to be -1.
        zselect 5 union select 6���Nr�rr	r	r
�CheckRowcountSelectXszCursorTests.CheckRowcountSelectcCs4|j�d�|j�ddddg�|�|jjd�dS)Nr`r+)r)r��rSrS)r3r1�executemanyrr�rr	r	r
�CheckRowcountExecutemanyasz$CursorTests.CheckRowcountExecutemanycCs0|j�d�|j�d�|jd|jjdd�dS)Nr{r�z"total changes reported wrong value)�msg)r3r1Z
assertLessr/Z
total_changesrr	r	r
�CheckTotalChangesfszCursorTests.CheckTotalChangescCs"|j�ddd�tdd�D��dS)NrmcSsg|]
}|f�qSr	r	)�.0r�r	r	r
�
<listcomp>psz8CursorTests.CheckExecuteManySequence.<locals>.<listcomp>�d�n)r3r��rangerr	r	r
�CheckExecuteManySequenceosz$CursorTests.CheckExecuteManySequencecCs"Gdd�d�}|j�d|��dS)Nc@seZdZdd�Zdd�ZdS)z4CursorTests.CheckExecuteManyIterator.<locals>.MyItercSs
d|_dS�N�)�valuerr	r	r
�__init__tsz=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__init__cSs*|jdkrt�n|jd7_|jfSdS)N�
r)r��
StopIterationrr	r	r
�__next__ws
z=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__next__N)r&r'r(r�r�r	r	r	r
�MyIterssr�rm�r3r�)rr�r	r	r
�CheckExecuteManyIteratorrsz$CursorTests.CheckExecuteManyIteratorcCsdd�}|j�d|��dS)Ncsstd�D]}|fVqdSr�)r�)�ir	r	r
�mygen�sz4CursorTests.CheckExecuteManyGenerator.<locals>.mygenrmr�)rr�r	r	r
�CheckExecuteManyGenerator�sz%CursorTests.CheckExecuteManyGeneratorc	Cs*|�t��|j�ddg�W5QRXdS)Nrhr�)rBrir3r�rr	r	r
�CheckExecuteManyWrongSqlArg�sz'CursorTests.CheckExecuteManyWrongSqlArgc	Cs,|�tj��|j�ddg�W5QRXdS)Nzselect ?r�)rBrr"r3r�rr	r	r
�CheckExecuteManySelect�sz"CursorTests.CheckExecuteManySelectc	Cs(|�t��|j�dd�W5QRXdS)Nrmrh)rB�	TypeErrorr3r�rr	r	r
�CheckExecuteManyNotIterable�sz'CursorTests.CheckExecuteManyNotIterablecCsv|j�d�|j�dd�|j�dd�|j�d�g}|jD]}|�|d�q>|�|dd�|�|dd	�dS)
Nr`rk)r�)�zselect id from test order by idrr�rr�)r3r1�appendr)rZlstrIr	r	r
�CheckFetchIter�s
zCursorTests.CheckFetchItercCs@|j�d�|j��}|�|dd�|j��}|�|d�dS)N�select name from testrr-r}rrr	r	r
�
CheckFetchone�s


zCursorTests.CheckFetchonecCs"|j��}|��}|�|d�dSr5)r/r0rHr)r�currIr	r	r
�CheckFetchoneNoStatement�s
z$CursorTests.CheckFetchoneNoStatementcCsr|�|jjd�d|j_|j�d�|j�d�|j�d�|j�d�|j�d�|j��}|�t|�d�dS)Nrr�r`z#insert into test(name) values ('A')z#insert into test(name) values ('B')z#insert into test(name) values ('C')r�)rr3Z	arraysizer1�	fetchmany�len�r�resr	r	r
�CheckArraySize�s
zCursorTests.CheckArraySizecCsD|j�d�|j�d�}|�t|�d�|j�d�}|�|g�dS)Nr�r�r�r3r1r�rr�r�r	r	r
�CheckFetchmany�s
zCursorTests.CheckFetchmanycCs.|j�d�|jjdd�}|�t|�d�dS)z0Checks if fetchmany works with keyword argumentsr�r�)�sizerNr�r�r	r	r
�CheckFetchmanyKwArg�szCursorTests.CheckFetchmanyKwArgcCs@|j�d�|j��}|�t|�d�|j��}|�|g�dS)Nr�r)r3r1�fetchallrr�r�r	r	r
�
CheckFetchall�s


zCursorTests.CheckFetchallcCs|j�dddg�dS)NrS�r�)r3Z
setinputsizesrr	r	r
�CheckSetinputsizes�szCursorTests.CheckSetinputsizescCs|j�dd�dS)Nr�r�r3Z
setoutputsizerr	r	r
�CheckSetoutputsize�szCursorTests.CheckSetoutputsizecCs|j�d�dSrgr�rr	r	r
�CheckSetoutputsizeNoColumn�sz&CursorTests.CheckSetoutputsizeNoColumncCs|�|jj|j�dSr5)rr3�
connectionr/rr	r	r
�CheckCursorConnection�sz!CursorTests.CheckCursorConnectionc	Cs.|�t��dd�}|j�|�}W5QRXdS)NcSsdSr5r	r	r	r	r
�f��z/CursorTests.CheckWrongCursorCallable.<locals>.f)rBr�r/r0)rr�r�r	r	r
�CheckWrongCursorCallable�sz$CursorTests.CheckWrongCursorCallablec	Cs8Gdd�d�}|�}|�t��t�|�}W5QRXdS)Nc@seZdZdS)z.CursorTests.CheckCursorWrongClass.<locals>.FooN)r&r'r(r	r	r	r
�Foo�sr�)rBr�rZCursor)rr�r-r�r	r	r
�CheckCursorWrongClass�sz!CursorTests.CheckCursorWrongClassc
CsNd}dD]@}|j|d��*|j�|�|�d�|�|jjd�W5QRXqdS)zV
        INSERT OR REPLACE and REPLACE INTO should produce the same behavior.
        z+{} INTO test(id, unique_test) VALUES (?, ?))zINSERT OR REPLACEZREPLACE��	statement)rr-rN)�subTestr3r1�formatrrq)r�sqlr�r	r	r
�CheckLastRowIDOnReplace�s
z#CursorTests.CheckLastRowIDOnReplacecCs@|j�dd�|�|jjd�|j�dd�|�|jjd�dS)Nz2insert or ignore into test(unique_test) values (?))�testr�)r3r1rrqrr	r	r
�CheckLastRowIDOnIgnore�s��z"CursorTests.CheckLastRowIDOnIgnorecCs�g}dD]�}d}|jd�|�d��n|j�|�|�|f�|�||jjf�|�tj��|j�|�|�|f�W5QRX|�||jjf�W5QRXqddddddg}|�	||�dS)N)�FAIL�ABORT�ROLLBACKz.INSERT OR {} INTO test(unique_test) VALUES (?)zINSERT OR {}r�)r�r�)r�rS)r�r�)
r�r�r3r1r�rqrBrrr)r�resultsr�r�Zexpectedr	r	r
�CheckLastRowIDInsertOR�s" �z"CursorTests.CheckLastRowIDInsertORN)6r&r'r(r4r8rbrcrdrerfrjrlrnrorsrtrwryrzr~r�r�r�r�r�r�r�rEr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r	r	r	r
r]�sf		

		

r]c@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�ThreadTestscCs(t�d�|_|j��|_|j�d�dS)Nr*z\create table test(id integer primary key, name text, bin binary, ratio number, ts timestamp))rr.rCr0r�r1rr	r	r
r4szThreadTests.setUpcCs|j��|j��dSr5)r�r7rCrr	r	r
r8s
zThreadTests.tearDowncCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsJz|��}|�d�WdStjk
r0YdS|�d�YnXdS�N�did not raise ProgrammingError�raised wrong exception)r0r�rr")rC�errorsr�r	r	r
�runs
z'ThreadTests.CheckConCursor.<locals>.run�rCr���target�kwargsr�
��	threading�ThreadrC�start�joinr��fail�rr�r��tr	r	r
�CheckConCursors
zThreadTests.CheckConCursorcCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsJz|��|�d�WdStjk
r0YdS|�d�YnXdSr�)r:r�rr"r�r	r	r
r�+s
z'ThreadTests.CheckConCommit.<locals>.runr�r�rr�r�r�r	r	r
�CheckConCommit*s
zThreadTests.CheckConCommitcCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsJz|��|�d�WdStjk
r0YdS|�d�YnXdSr�)r>r�rr"r�r	r	r
r�=s
z)ThreadTests.CheckConRollback.<locals>.runr�r�rr�r�r�r	r	r
�CheckConRollback<s
zThreadTests.CheckConRollbackcCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsJz|��|�d�WdStjk
r0YdS|�d�YnXdSr��r7r�rr"r�r	r	r
r�Os
z&ThreadTests.CheckConClose.<locals>.runr�r�rr�r�r�r	r	r
�
CheckConCloseNs
zThreadTests.CheckConClosecCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsLz|�d�|�d�WdStjk
r2YdS|�d�YnXdS)N�#insert into test(name) values ('a')r�r��r1r�rr"�r�r�r	r	r
r�as

z.ThreadTests.CheckCurImplicitBegin.<locals>.runr�r�rr��r�r�r�r�r�r�r�r�r	r	r
�CheckCurImplicitBegin`s
z!ThreadTests.CheckCurImplicitBegincCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsJz|��|�d�WdStjk
r0YdS|�d�YnXdSr�r�r�r	r	r
r�ss
z&ThreadTests.CheckCurClose.<locals>.runr�r�rr�r�r�r	r	r
�
CheckCurClosers
zThreadTests.CheckCurClosecCs^dd�}g}|j�d�tj||j|d�d�}|��|��t|�dkrZ|�d�|��dS)NcSsLz|�d�|�d�WdStjk
r2YdS|�d�YnXdS)Nr�r�r�r�r�r	r	r
r��s

z(ThreadTests.CheckCurExecute.<locals>.runr�r�r�rr��r�r1r�r�r�r�r�r�r�r	r	r
�CheckCurExecute�s
zThreadTests.CheckCurExecutecCsjdd�}g}|j�d�|j�d�tj||j|d�d�}|��|��t|�dkrf|�d�|��dS)	NcSsJz|��}|�d�WdStjk
r0YdS|�d�YnXdSr�)rHr�rr")r�r�rIr	r	r
r��s
z)ThreadTests.CheckCurIterNext.<locals>.runr�r�r�r�rr�rr�r	r	r
�CheckCurIterNext�s
zThreadTests.CheckCurIterNextN)
r&r'r(r4r8r�r�r�r�r�rrrr	r	r	r
r�sr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ConstructorTestscCst�ddd�}dS)N��r��)rZDate�r�dr	r	r
�	CheckDate�szConstructorTests.CheckDatecCst�ddd�}dS)N��'�#)rZTime�rr�r	r	r
�	CheckTime�szConstructorTests.CheckTimecCst�dddddd�}dS)Nrr�rr
rr)rZ	Timestamp�r�tsr	r	r
�CheckTimestamp�szConstructorTests.CheckTimestampcCst�d�}dSrg)rZ
DateFromTicksrr	r	r
�CheckDateFromTicks�sz#ConstructorTests.CheckDateFromTickscCst�d�}dSrg)rZ
TimeFromTicksr
r	r	r
�CheckTimeFromTicks�sz#ConstructorTests.CheckTimeFromTickscCst�d�}dSrg)rZTimestampFromTicksrr	r	r
�CheckTimestampFromTicks�sz(ConstructorTests.CheckTimestampFromTickscCst�d�}dS)Ns')rZBinary)r�br	r	r
�CheckBinary�szConstructorTests.CheckBinaryN)
r&r'r(r	rrrrrrr	r	r	r
r�src@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�ExtensionTestscCsBt�d�}|��}|�d�|�d�|��d}|�|d�dS)Nr*z�
            -- bla bla
            /* a stupid comment */
            create table a(i);
            insert into a(i) values (5);
            zselect i from arr�)rr.r0�
executescriptr1rHr)rrCr�r�r	r	r
�CheckScriptStringSql�s


z#ExtensionTests.CheckScriptStringSqlc	Cs8t�d�}|��}|�tj��|�d�W5QRXdS)Nr*z1create table test(x); asdf; create table test2(x)�rr.r0rBrr�rrCr�r	r	r
�CheckScriptSyntaxError�s
z%ExtensionTests.CheckScriptSyntaxErrorc	Cs8t�d�}|��}|�tj��|�d�W5QRXdS)Nr*z5create table test(sadfsadfdsa); select foo from hurz;rrr	r	r
�CheckScriptErrorNormal�s
z%ExtensionTests.CheckScriptErrorNormalc	CsHt�d�}|��}|�t��}|�d�W5QRX|�t|j�d�dS)Nr*s9create table test(foo); insert into test(foo) values (5);z script argument must be unicode.)	rr.r0rBrirrrWrX)rrCr�rZr	r	r
�CheckCursorExecutescriptAsBytes�s

z.ExtensionTests.CheckCursorExecutescriptAsBytescCs.t�d�}|�d���d}|�|dd�dS)Nr*zselect 5rr�z Basic test of Connection.execute)rr.r1rHr�rrC�resultr	r	r
�CheckConnectionExecute�s
z%ExtensionTests.CheckConnectionExecutecCsbt�d�}|�d�|�dddg�|�d���}|�|dddd	�|�|d
ddd	�dS)Nr*zcreate table test(foo)z insert into test(foo) values (?)r��r�z!select foo from test order by foorrSz$Basic test of Connection.executemanyrr�)rr.r1r�r�rrr	r	r
�CheckConnectionExecutemany�s

z)ExtensionTests.CheckConnectionExecutemanycCs8t�d�}|�d�|�d���d}|�|dd�dS)Nr*z9create table test(foo); insert into test(foo) values (5);zselect foo from testrr�z&Basic test of Connection.executescript)rr.rr1rHrrr	r	r
�CheckConnectionExecutescript�s

z+ExtensionTests.CheckConnectionExecutescriptN)
r&r'r(rrrrr!r#r$r	r	r	r
r�s
rc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�ClosedConTestsc	Cs6t�d�}|��|�tj��|��}W5QRXdS�Nr*)rr.r7rBr"r0rr	r	r
�CheckClosedConCursor�s
z#ClosedConTests.CheckClosedConCursorc	Cs6t�d�}|��|�tj��|��W5QRXdSr&)rr.r7rBr"r:�rrCr	r	r
�CheckClosedConCommit�s
z#ClosedConTests.CheckClosedConCommitc	Cs6t�d�}|��|�tj��|��W5QRXdSr&)rr.r7rBr"r>r(r	r	r
�CheckClosedConRollbacks
z%ClosedConTests.CheckClosedConRollbackc	Cs@t�d�}|��}|��|�tj��|�d�W5QRXdS)Nr*zselect 4)rr.r0r7rBr"r1rr	r	r
�CheckClosedCurExecutes

z$ClosedConTests.CheckClosedCurExecutec	CsDt�d�}|��dd�}|�tj��|�dd|�W5QRXdS)Nr*cSsdS�Nrur	)r�r	r	r
r�r�z3ClosedConTests.CheckClosedCreateFunction.<locals>.fr-r)rr.r7rBr"Zcreate_function)rrCr�r	r	r
�CheckClosedCreateFunctions

z(ClosedConTests.CheckClosedCreateFunctionc	CsJt�d�}|��Gdd�d�}|�tj��|�dd|�W5QRXdS)Nr*c@s$eZdZdd�Zdd�Zdd�ZdS)z6ClosedConTests.CheckClosedCreateAggregate.<locals>.AggcSsdSr5r	rr	r	r
r�sz?ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.__init__cSsdSr5r	r�r	r	r
�stepsz;ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.stepcSsdSr,r	rr	r	r
�finalizesz?ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.finalizeN)r&r'r(r�r.r/r	r	r	r
�Aggsr0r-r)rr.r7rBr"Zcreate_aggregate)rrCr0r	r	r
�CheckClosedCreateAggregates

z)ClosedConTests.CheckClosedCreateAggregatec	Cs@t�d�}|��dd�}|�tj��|�|�W5QRXdS)Nr*cWstjSr5)rZDENY)�argsr	r	r
�
authorizer&sz;ClosedConTests.CheckClosedSetAuthorizer.<locals>.authorizer)rr.r7rBr"Zset_authorizer)rrCr3r	r	r
�CheckClosedSetAuthorizer#s

z'ClosedConTests.CheckClosedSetAuthorizerc	CsBt�d�}|��dd�}|�tj��|�|d�W5QRXdS)Nr*cSsdSr5r	r	r	r	r
�progress.r�z?ClosedConTests.CheckClosedSetProgressCallback.<locals>.progressr�)rr.r7rBr"Zset_progress_handler)rrCr5r	r	r
�CheckClosedSetProgressCallback+s

z-ClosedConTests.CheckClosedSetProgressCallbackc	Cs4t�d�}|��|�tj��|�W5QRXdSr&)rr.r7rBr"r(r	r	r
�CheckClosedCall2s
zClosedConTests.CheckClosedCallN)r&r'r(r'r)r*r+r-r1r4r6r7r	r	r	r
r%�s
r%c@seZdZdd�ZdS)�ClosedCurTestsc
Cszt�d�}|��}|��dD]V}|dkr0d}n|dkrFdddgf}ng}|�tj��t||�}||�W5QRXqdS)	Nr*)r1r�rr�r�rH)r1r)zselect 4 union select 5r�zinsert into foo(bar) values (?)r�r")rr.r0r7rBr"�getattr)rrCr�Zmethod_name�params�methodr	r	r
�CheckClosed9s

zClosedCurTests.CheckClosedN)r&r'r(r<r	r	r	r
r88sr8c@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�SqliteOnConflictTestszz
    Tests for SQLite's "insert on conflict" feature.

    See https://www.sqlite.org/lang_conflict.html for details.
    cCs(t�d�|_|j��|_|j�d�dS)Nr*zz
          CREATE TABLE test(
            id INTEGER PRIMARY KEY, name TEXT, unique_name TEXT UNIQUE
          );
        r^rr	r	r
r4RszSqliteOnConflictTests.setUpcCs|j��|j��dSr5r_rr	r	r
r8[s
zSqliteOnConflictTests.tearDownc	Cs�d|j_|j��|_|j�d�|j�d�|j�d�|�tj��|j�d�W5QRX|j��|j�d�|�	|j�
�g�dS)N�BEGIN�,INSERT INTO test(name) VALUES ('abort_test')�8INSERT OR ROLLBACK INTO test(unique_name) VALUES ('foo')z"SELECT name, unique_name from test�r/Zisolation_levelr0r3r1rBrrr:rr�rr	r	r
�.CheckOnConflictRollbackWithExplicitTransaction_s
zDSqliteOnConflictTests.CheckOnConflictRollbackWithExplicitTransactionc	Cs�d|j_|j��|_|j�d�|j�d�|j�d�|�tj��|j�d�W5QRX|j��|j�d�|�	|j�
�ddg�dS)Nr>r?�5INSERT OR ABORT INTO test(unique_name) VALUES ('foo')�"SELECT name, unique_name FROM test�Z
abort_testNr�rArr	r	r
�2CheckOnConflictAbortRaisesWithExplicitTransactionsns
zHSqliteOnConflictTests.CheckOnConflictAbortRaisesWithExplicitTransactionsc	Cs^|j�d�|j�d�|�tj��|j�d�W5QRX|j�d�|�|j��g�dS)Nr?r@rD�r3r1rBrrrr�rr	r	r
�)CheckOnConflictRollbackWithoutTransaction~sz?SqliteOnConflictTests.CheckOnConflictRollbackWithoutTransactionc	Csb|j�d�|j�d�|�tj��|j�d�W5QRX|j�d�|�|j��ddg�dS)Nr?rCrDrEr�rGrr	r	r
�-CheckOnConflictAbortRaisesWithoutTransactions�szCSqliteOnConflictTests.CheckOnConflictAbortRaisesWithoutTransactionsc	CsF|j�d�|�tj��|j�d�W5QRX|�|j��g�dS)Nz4INSERT OR FAIL INTO test(unique_name) VALUES ('foo')rGrr	r	r
�CheckOnConflictFail�sz)SqliteOnConflictTests.CheckOnConflictFailcCs<|j�d�|j�d�|j�d�|�|j��dg�dS)Nz6INSERT OR IGNORE INTO test(unique_name) VALUES ('foo')zSELECT unique_name FROM testr,�r3r1rr�rr	r	r
�CheckOnConflictIgnore�sz+SqliteOnConflictTests.CheckOnConflictIgnorecCs<|j�d�|j�d�|j�d�|�|j��dg�dS)NzFINSERT OR REPLACE INTO test(name, unique_name) VALUES ('Data!', 'foo')zUINSERT OR REPLACE INTO test(name, unique_name) VALUES ('Very different data!', 'foo')rD)zVery different data!r-rKrr	r	r
�CheckOnConflictReplace�sz,SqliteOnConflictTests.CheckOnConflictReplaceN)
r&r'r(�__doc__r4r8rBrFrHrIrJrLrMr	r	r	r
r=Ks	
r=c	Cs�t�td�}t�td�}t�td�}t�td�}t�td�}t�td�}t�td�}t�t	d�}t�t
d�}t�|||||||||f	�S)NZCheck)r\Z	makeSuiterr)r]r�rrr%r8r=Z	TestSuite)	Zmodule_suiteZconnection_suiteZcursor_suiteZthread_suiteZconstructor_suiteZ	ext_suiteZclosed_con_suiteZclosed_cur_suiteZon_conflict_suiter	r	r
�suite�s(�rOcCst��}|�t��dSr5)r\ZTextTestRunnerr�rO)Zrunnerr	r	r
r��sr��__main__)r�r\Zsqlite3rZtest.supportrrZTestCaserr)r]r�rrr%r8r=rOr�r&r	r	r	r
�<module>s&7mM4C]

F1le Man4ger