Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.9/sqlite3/test/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.9/sqlite3/test/__pycache__/dbapi.cpython-39.opt-1.pyc

a

��g���@s&ddlZddlZddlZddlZddlZddlmZmZm	Z	Gdd�dej
�ZGdd�dej
�ZGdd�dej
�Z
Gd	d
�d
ej
�ZGdd�dej
�ZGd
d�dej
�ZGdd�dej
�ZGdd�dej
�ZGdd�dej
�ZGdd�dej
�ZGdd�dej
�Zdd�Zdd�Zedk�r"e�dS)�N)�
SHORT_TIMEOUT�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
�./usr/local/lib/python3.9/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�
CheckError3s�zModuleTests.CheckErrorcCs|�ttjtj�d�dS)Nz)InterfaceError is not a subclass of Error)rrr�InterfaceErrorrrr
r
r�CheckInterfaceError7s�zModuleTests.CheckInterfaceErrorcCs|�ttjtj�d�dS)Nz(DatabaseError is not a subclass of Error)rrr�
DatabaseErrorrrr
r
r�CheckDatabaseError;s�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�CheckOperationalErrorCs�z!ModuleTests.CheckOperationalErrorcCs|�ttjtj�d�dS)Nz1IntegrityError is not a subclass of DatabaseError)rrr�IntegrityErrorrrr
r
r�CheckIntegrityErrorGs�zModuleTests.CheckIntegrityErrorcCs|�ttjtj�d�dS)Nz0InternalError is not a subclass of DatabaseError)rrr�
InternalErrorrrr
r
r�CheckInternalErrorKs�zModuleTests.CheckInternalErrorcCs|�ttjtj�d�dS)Nz3ProgrammingError is not a subclass of DatabaseError)rrr�ProgrammingErrorrrr
r
r�CheckProgrammingErrorOs�z!ModuleTests.CheckProgrammingErrorcCs|�ttjtj�d�dS)Nz4NotSupportedError is not a subclass of DatabaseError)rrr�NotSupportedErrorrrr
r
r�CheckNotSupportedErrorSs

��z"ModuleTests.CheckNotSupportedErrorN)�__name__�
__module__�__qualname__rrrrrrrrrr r"r$r&r
r
r
rr!src@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�setUpZs

zConnectionTests.setUpcCs|j��dS�N�r0�closerr
r
r�tearDown`szConnectionTests.tearDowncCs|j��dSr6�r0�commitrr
r
r�CheckCommitcszConnectionTests.CheckCommitcCs|j��|j��dS)zV
        A commit should also work when no changes were made to the database.
        Nr:rr
r
r�CheckCommitAfterNoChangesfs
z)ConnectionTests.CheckCommitAfterNoChangescCs|j��dSr6�r0�rollbackrr
r
r�
CheckRollbackmszConnectionTests.CheckRollbackcCs|j��|j��dS)zX
        A rollback should also work when no changes were made to the database.
        Nr>rr
r
r�CheckRollbackAfterNoChangesps
z+ConnectionTests.CheckRollbackAfterNoChangescCs|j��}dSr6�r0r1r3r
r
r�CheckCursorwszConnectionTests.CheckCursorcCs>d}|�tj��t�|�}Wd�n1s00YdS)Nz/foo/bar/bla/23534/mydb.db)�assertRaisesrrr/)r	ZYOU_CANNOT_OPEN_THIS�conr
r
r�CheckFailedOpenzszConnectionTests.CheckFailedOpencCs|j��dSr6r7rr
r
r�
CheckCloseszConnectionTests.CheckClosecCs�|�|jjtj�|�|jjtj�|�|jjtj�|�|jjtj�|�|jjtj�|�|jjtj�|�|jj	tj	�|�|jj
tj
�|�|jjtj�|�|jjtj�dSr6)
rr0rrrrrrrrr!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/r1r�in_transactionr2�fetchoner;)r	r0r4�rowr
r
r�CheckInTransaction�s

z"ConnectionTests.CheckInTransactioncCs6|�t��d|j_Wd�n1s(0YdS)NT)rD�AttributeErrorr0rIrr
r
r�CheckInTransactionRO�sz$ConnectionTests.CheckInTransactionROcCsX|�tt�Gdd�d�}|�}t�|��}|�d�Wd�n1sJ0YdS)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>.PathcSstSr6)rrr
r
r�
__fspath__�szDConnectionTests.CheckOpenWithPathLikeObject.<locals>.Path.__fspath__N)r'r(r)rOr
r
r
r�Path�srP�create table test(id integer)N)�
addCleanuprrrr/r2)r	rP�pathr0r
r
r�CheckOpenWithPathLikeObject�s
z+ConnectionTests.CheckOpenWithPathLikeObjectc	Cs8tjdkrH|�tj��tjddd�Wd�n1s:0YdS|�tt�t�t��}|�d�Wd�n1s~0Ytjdtdd��}|�d�Wd�n1s�0Ytjdtddd��H}|�tj	��|�d	�Wd�n1�s
0YWd�n1�s*0YdS)
N)��rVr+T)ZurirQzfile:zinsert into test(id) values(0)z?mode=rozinsert into test(id) values(1))
r�sqlite_version_inforDr%r/rRrrr2r)r	r0r
r
r�CheckOpenUri�s
,((zConnectionTests.CheckOpenUri)rUrUr
z&needs sqlite versions older than 3.3.1cCsP|�tj��}tjddd�Wd�n1s00Y|�t|j�d�dS)Nr+F)Zcheck_same_threadz shared connections not available)rDrr%r/r�str�	exception�r	�cmr
r
r� CheckSameThreadErrorOnOldVersion�s,z0ConnectionTests.CheckSameThreadErrorOnOldVersionN)r'r(r)r5r9r<r=r@rArCrFrGrHrLrNrTrX�unittestZskipIfrrWr]r
r
r
rr*Xs$
�r*c@seZdZdd�Zdd�ZdS)�UninitialisedConnectionTestscCstj�tj�|_dSr6)r�
Connection�__new__r0rr
r
rr5�sz"UninitialisedConnectionTests.setUpc	s��fdd��fdd��fdd��fdd��fdd��fdd�f}|D]@}�j|d�� ��tjd	|�Wd�qD1sz0YqDdS)
Ncs�jjSr6)r0�isolation_levelr
rr
r�<lambda>��zEUninitialisedConnectionTests.test_uninit_operations.<locals>.<lambda>cs�jjSr6)r0�
total_changesr
rr
rrc�rdcs�jjSr6)r0rIr
rr
rrc�rdcs
�j��Sr6)r0Ziterdumpr
rr
rrc�rdcs
�j��Sr6rBr
rr
rrc�rdcs
�j��Sr6r7r
rr
rrc�rd)�funcz#Base Connection.__init__ not called)�subTestZassertRaisesRegexrr#)r	Zfuncsrfr
rr�test_uninit_operations�s





��z3UninitialisedConnectionTests.test_uninit_operationsN)r'r(r)r5rhr
r
r
rr_�sr_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/r0r1r4r2rr
r
rr5�s�zCursorTests.setUpcCs|j��|j��dSr6�r4r8r0rr
r
rr9�s
zCursorTests.tearDowncCs|j�d�dS)N�delete from test�r4r2rr
r
r�CheckExecuteNoArgs�szCursorTests.CheckExecuteNoArgscCs<|�tj��|j�d�Wd�n1s.0YdS)Nzselect asdf)rDrrr4r2rr
r
r�CheckExecuteIllegalSql�sz"CursorTests.CheckExecuteIllegalSqlcCs<|�tj��|j�d�Wd�n1s.0YdS)Nzselect 5+4; select 4+5)rDrrr4r2rr
r
r�CheckExecuteTooMuchSql�sz"CursorTests.CheckExecuteTooMuchSqlcCs|j�d�dS)Nzselect 5+4; -- foo barrmrr
r
r�CheckExecuteTooMuchSql2�sz#CursorTests.CheckExecuteTooMuchSql2cCs|j�d�dS)NzT
            select 5+4;

            /*
            foo
            */
            rmrr
r
r�CheckExecuteTooMuchSql3�sz#CursorTests.CheckExecuteTooMuchSql3cCs:|�t��|j�d�Wd�n1s,0YdS�N�*)rD�	TypeErrorr4r2rr
r
r�CheckExecuteWrongSqlArg�sz#CursorTests.CheckExecuteWrongSqlArgcCs|j�dd�dS)N�insert into test(id) values (?))rtrmrr
r
r�CheckExecuteArgIntszCursorTests.CheckExecuteArgIntcCs|j�dd�dS)N�#insert into test(income) values (?))gq=
ף��@rmrr
r
r�CheckExecuteArgFloatsz CursorTests.CheckExecuteArgFloatcCs|j�dd�dS)Nr,)ZHugormrr
r
r�CheckExecuteArgString	sz!CursorTests.CheckExecuteArgStringcCs@|j�dd�|j�d|jjf�|j��}|�|dd�dS)Nr,)�Hugoz select name from test where id=?rr|)r4r2�	lastrowidrJr�r	rKr
r
r�!CheckExecuteArgStringWithZeroBytes
z-CursorTests.CheckExecuteArgStringWithZeroBytecCsN|�t��}|j�dd�Wd�n1s.0Y|�t|j�d�dS)Nrwrtz"parameters are of unsupported type)rD�
ValueErrorr4r2rrYrZr[r
r
r�CheckExecuteNonIterables,z#CursorTests.CheckExecuteNonIterablecCs>|�tj��|j�dd�Wd�n1s00YdS)Nrw)�ZEgon�rDrr#r4r2rr
r
r�CheckExecuteWrongNoOfArgs1sz&CursorTests.CheckExecuteWrongNoOfArgs1cCs<|�tj��|j�d�Wd�n1s.0YdS�Nrwr�rr
r
r�CheckExecuteWrongNoOfArgs2sz&CursorTests.CheckExecuteWrongNoOfArgs2cCs<|�tj��|j�d�Wd�n1s.0YdSr�r�rr
r
r�CheckExecuteWrongNoOfArgs3"sz&CursorTests.CheckExecuteWrongNoOfArgs3cCs:|j�d�|j�ddg�|j��}|�|dd�dS)N�%insert into test(name) values ('foo')�"select name from test where name=?r.r�r4r2rJrr~r
r
r�CheckExecuteParamList's
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__1sz<CursorTests.CheckExecuteParamSequence.<locals>.L.__getitem__N�r'r(r)r�r�r
r
r
r�L.sr�r�r�rr.r�)r	r�rKr
r
r�CheckExecuteParamSequence-s

z%CursorTests.CheckExecuteParamSequencecCsXGdd�d�}|j�d�|�t�� |j�d|��Wd�n1sJ0YdS)Nc@seZdZdd�Zdd�ZdS)z6CursorTests.CheckExecuteParamSequenceBadLen.<locals>.LcSsdddS)Nr
rr
rr
r
rr�=sz>CursorTests.CheckExecuteParamSequenceBadLen.<locals>.L.__len__cSst�dSr6)�AssertionError)Zslfr�r
r
rr�?szBCursorTests.CheckExecuteParamSequenceBadLen.<locals>.L.__getitem__Nr�r
r
r
rr�<sr�r�r�)r4r2rD�ZeroDivisionError)r	r�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�r~r
r
r�CheckExecuteDictMappingFs
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__NszBCursorTests.CheckExecuteDictMapping_Mapping.<locals>.D.__missing__N)r'r(r)r�r
r
r
r�DMsr�r�r�rr.)�dictr4r2rJr)r	r�rKr
r
r�CheckExecuteDictMapping_MappingLs

z+CursorTests.CheckExecuteDictMapping_MappingcCsN|j�d�|�tj��"|j�dddi�Wd�n1s@0YdS)Nr�z1select name from test where name=:name and id=:idr�r.�r4r2rDrr#rr
r
r�$CheckExecuteDictMappingTooLittleArgsVsz0CursorTests.CheckExecuteDictMappingTooLittleArgscCsH|j�d�|�tj��|j�d�Wd�n1s:0YdS)Nr�r�r�rr
r
r�CheckExecuteDictMappingNoArgs[sz)CursorTests.CheckExecuteDictMappingNoArgscCsN|j�d�|�tj��"|j�dddi�Wd�n1s@0YdS)Nr�r�r�r.r�rr
r
r�CheckExecuteDictMappingUnnamed`sz*CursorTests.CheckExecuteDictMappingUnnamedcCs|j��dSr6)r4r8rr
r
rrGeszCursorTests.CheckClosecCsD|j�d�|j�d�|j�d�|j�d�|�|jjd�dS)Nrlr�zupdate test set name='bar'��r4r2r�rowcountrr
r
r�CheckRowcountExecutehs
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�CheckRowcountSelectoszCursorTests.CheckRowcountSelectcCs2|j�d�|j�dgd��|�|jjd�dS)Nrlr,))r
)r��rUrU)r4r2�executemanyrr�rr
r
r�CheckRowcountExecutemanyxsz$CursorTests.CheckRowcountExecutemanycCs0|j�d�|j�d�|jd|jjdd�dS)Nr�r�z"total changes reported wrong value)�msg)r4r2Z
assertLessr0rerr
r
r�CheckTotalChanges}szCursorTests.CheckTotalChangescCs"|j�ddd�tdd�D��dS)NrycSsg|]
}|f�qSr
r
)�.0r�r
r
r�
<listcomp>�rdz8CursorTests.CheckExecuteManySequence.<locals>.<listcomp>�d�n)r4r��rangerr
r
r�CheckExecuteManySequence�sz$CursorTests.CheckExecuteManySequencecCs"Gdd�d�}|j�d|��dS)Nc@s$eZdZdd�Zdd�Zdd�ZdS)z4CursorTests.CheckExecuteManyIterator.<locals>.MyItercSs
d|_dS�N�)�valuerr
r
r�__init__�sz=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__init__cSs|Sr6r
rr
r
r�__iter__�sz=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__iter__cSs*|jdkrt�n|jd7_|jfSdS)N�
r
)r��
StopIterationrr
r
r�__next__�s
z=CursorTests.CheckExecuteManyIterator.<locals>.MyIter.__next__N)r'r(r)r�r�r�r
r
r
r�MyIter�sr�ry�r4r�)r	r�r
r
r�CheckExecuteManyIterator�sz$CursorTests.CheckExecuteManyIteratorcCsdd�}|j�d|��dS)Ncsstd�D]}|fVqdSr�)r�)�ir
r
r�mygen�sz4CursorTests.CheckExecuteManyGenerator.<locals>.mygenryr�)r	r�r
r
r�CheckExecuteManyGenerator�sz%CursorTests.CheckExecuteManyGeneratorcCs>|�t�� |j�ddg�Wd�n1s00YdS)Nrtr��rDrur4r�rr
r
r�CheckExecuteManyWrongSqlArg�sz'CursorTests.CheckExecuteManyWrongSqlArgcCs@|�tj�� |j�ddg�Wd�n1s20YdS)Nzselect ?r�)rDrr#r4r�rr
r
r�CheckExecuteManySelect�sz"CursorTests.CheckExecuteManySelectcCs<|�t��|j�dd�Wd�n1s.0YdS)Nryrtr�rr
r
r�CheckExecuteManyNotIterable�sz'CursorTests.CheckExecuteManyNotIterablecCsv|j�d�|j�dd�|j�dd�|j�d�g}|jD]}|�|d�q>|�|dd�|�|dd	�dS)
Nrlrw)r�)�zselect id from test order by idrr�r
r�)r4r2�appendr)r	ZlstrKr
r
r�CheckFetchIter�s
zCursorTests.CheckFetchItercCs@|j�d�|j��}|�|dd�|j��}|�|d�dS)N�select name from testrr.r�r~r
r
r�
CheckFetchone�s


zCursorTests.CheckFetchonecCs"|j��}|��}|�|d�dSr6)r0r1rJr)r	�currKr
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�rlz#insert into test(name) values ('A')z#insert into test(name) values ('B')z#insert into test(name) values ('C')r�)rr4Z	arraysizer2�	fetchmany�len�r	�resr
r
r�CheckArraySize�s
zCursorTests.CheckArraySizecCsD|j�d�|j�d�}|�t|�d�|j�d�}|�|g�dS)Nr�r�r
�r4r2r�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
)r4r2�fetchallrr�r�r
r
r�
CheckFetchall�s


zCursorTests.CheckFetchallcCs|j�gd��dS)N)rU�r�)r4Z
setinputsizesrr
r
r�CheckSetinputsizes�szCursorTests.CheckSetinputsizescCs|j�dd�dS)Nr�r�r4Z
setoutputsizerr
r
r�CheckSetoutputsize�szCursorTests.CheckSetoutputsizecCs|j�d�dSrsr�rr
r
r�CheckSetoutputsizeNoColumn�sz&CursorTests.CheckSetoutputsizeNoColumncCs|�|jj|j�dSr6)rr4�
connectionr0rr
r
r�CheckCursorConnection�sz!CursorTests.CheckCursorConnectioncCsB|�t��$dd�}|j�|�}Wd�n1s40YdS)NcSsdSr6r
r
r
r
r�f�rdz/CursorTests.CheckWrongCursorCallable.<locals>.f)rDrur0r1)r	r�r�r
r
r�CheckWrongCursorCallable�sz$CursorTests.CheckWrongCursorCallablecCsLGdd�d�}|�}|�t��t�|�}Wd�n1s>0YdS)Nc@seZdZdS)z.CursorTests.CheckCursorWrongClass.<locals>.FooN)r'r(r)r
r
r
r�Foo�rdr�)rDrurZCursor)r	r�r.r�r
r
r�CheckCursorWrongClass�sz!CursorTests.CheckCursorWrongClassc	Csbd}dD]T}|j|d��4|j�|�|�d�|�|jjd�Wd�q1sR0YqdS)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)rgr4r2�formatrr})r	�sqlr�r
r
r�CheckLastRowIDOnReplaces
z#CursorTests.CheckLastRowIDOnReplacecCs@|j�dd�|�|jjd�|j�dd�|�|jjd�dS)Nz2insert or ignore into test(unique_test) values (?))�testr�)r4r2rr}rr
r
r�CheckLastRowIDOnIgnores��z"CursorTests.CheckLastRowIDOnIgnorec
Cs�g}dD]�}d}|jd�|�d���|j�|�|�|f�|�||jjf�|�tj��&|j�|�|�|f�Wd�n1s�0Y|�||jjf�Wd�q1s�0Yqgd�}|�	||�dS)N)�FAIL�ABORT�ROLLBACKz.INSERT OR {} INTO test(unique_test) VALUES (?)zINSERT OR {}r�)�r�r�r��r�rUr��r�r�r�)
rgr�r4r2r�r}rDrrr)r	�resultsr�r�Zexpectedr
r
r�CheckLastRowIDInsertORs42z"CursorTests.CheckLastRowIDInsertORN)6r'r(r)r5r9rnrorprqrrrvrxrzr{rr�r�r�r�r�r�r�r�r�r�r�r�rGr�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
rri�sf		

		

ric@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/rEr1r�r2rr
r
rr5)szThreadTests.setUpcCs|j��|j��dSr6)r�r8rErr
r
rr9.s
zThreadTests.tearDowncCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsHz|��}|�d�WdStjy.YdS|�d�Yn0dS�N�did not raise ProgrammingError�raised wrong exception)r1r�rr#)rE�errorsr�r
r
r�run3s
z'ThreadTests.CheckConCursor.<locals>.run�rEr���target�kwargsr�
��	threading�ThreadrE�start�joinr��fail�r	r�r��tr
r
r�CheckConCursor2s
zThreadTests.CheckConCursorcCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsHz|��|�d�WdStjy.YdS|�d�Yn0dSr�)r;r�rr#r�r
r
rr�Es
z'ThreadTests.CheckConCommit.<locals>.runr�r�rr�r�rr
r
r�CheckConCommitDs
zThreadTests.CheckConCommitcCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsHz|��|�d�WdStjy.YdS|�d�Yn0dSr�)r?r�rr#r�r
r
rr�Ws
z)ThreadTests.CheckConRollback.<locals>.runr�r�rr�r�rr
r
r�CheckConRollbackVs
zThreadTests.CheckConRollbackcCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsHz|��|�d�WdStjy.YdS|�d�Yn0dSr��r8r�rr#r�r
r
rr�is
z&ThreadTests.CheckConClose.<locals>.runr�r�rr�r�rr
r
r�
CheckConClosehs
zThreadTests.CheckConClosecCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsJz|�d�|�d�WdStjy0YdS|�d�Yn0dS)N�#insert into test(name) values ('a')r�r��r2r�rr#�r�r�r
r
rr�{s

z.ThreadTests.CheckCurImplicitBegin.<locals>.runrr�rr��r�r�r�rrr�rrr
r
r�CheckCurImplicitBeginzs
z!ThreadTests.CheckCurImplicitBegincCsRdd�}g}tj||j|d�d�}|��|��t|�dkrN|�d�|��dS)NcSsHz|��|�d�WdStjy.YdS|�d�Yn0dSr�rrr
r
rr��s
z&ThreadTests.CheckCurClose.<locals>.runrr�rr�r
rr
r
r�
CheckCurClose�s
zThreadTests.CheckCurClosecCs^dd�}g}|j�d�tj||j|d�d�}|��|��t|�dkrZ|�d�|��dS)NcSsJz|�d�|�d�WdStjy0YdS|�d�Yn0dS)Nr�r�r�rrr
r
rr��s

z(ThreadTests.CheckCurExecute.<locals>.runr
rr�rr��r�r2r�r�rrr�rrr
r
r�CheckCurExecute�s
zThreadTests.CheckCurExecutecCsjdd�}g}|j�d�|j�d�tj||j|d�d�}|��|��t|�dkrf|�d�|��dS)	NcSsHz|��}|�d�WdStjy.YdS|�d�Yn0dSr�)rJr�rr#)r�r�rKr
r
rr��s
z)ThreadTests.CheckCurIterNext.<locals>.runr
r�rr�rr�rrr
r
r�CheckCurIterNext�s
zThreadTests.CheckCurIterNextN)
r'r(r)r5r9rrrr	rrrrr
r
r
rr�(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�r	rr
r
r�	CheckTime�szConstructorTests.CheckTimecCst�dddddd�}dS)Nrr�rrrr)rZ	Timestamp�r	�tsr
r
r�CheckTimestamp�szConstructorTests.CheckTimestampcCst�d�}dSrs)rZ
DateFromTicksrr
r
r�CheckDateFromTicks�sz#ConstructorTests.CheckDateFromTickscCst�d�}dSrs)rZ
TimeFromTicksrr
r
r�CheckTimeFromTicks�sz#ConstructorTests.CheckTimeFromTickscCst�d�}dSrs)rZTimestampFromTicksrr
r
r�CheckTimestampFromTicks�sz(ConstructorTests.CheckTimestampFromTickscCst�d�}dS)Ns')rZBinary)r	�br
r
r�CheckBinary�szConstructorTests.CheckBinaryN)
r'r(r)rrr r!r"r#r%r
r
r
rr�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/r1�
executescriptr2rJr)r	rEr�r�r
r
r�CheckScriptStringSql�s


z#ExtensionTests.CheckScriptStringSqlcCsLt�d�}|��}|�tj��|�d�Wd�n1s>0YdS)Nr+z1create table test(x); asdf; create table test2(x)�rr/r1rDrr'�r	rEr�r
r
r�CheckScriptSyntaxError�s
z%ExtensionTests.CheckScriptSyntaxErrorcCsLt�d�}|��}|�tj��|�d�Wd�n1s>0YdS)Nr+z5create table test(sadfsadfdsa); select foo from hurz;r)r*r
r
r�CheckScriptErrorNormal�s
z%ExtensionTests.CheckScriptErrorNormalcCs\t�d�}|��}|�t��}|�d�Wd�n1s<0Y|�t|j�d�dS)Nr+s9create table test(foo); insert into test(foo) values (5);z script argument must be unicode.)	rr/r1rDr�r'rrYrZ)r	rEr�r\r
r
r�CheckCursorExecutescriptAsBytes�s

(z.ExtensionTests.CheckCursorExecutescriptAsBytescCs.t�d�}|�d���d}|�|dd�dS)Nr+zselect 5rr�z Basic test of Connection.execute)rr/r2rJr�r	rE�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 foorrUz$Basic test of Connection.executemanyr
r�)rr/r2r�r�rr.r
r
r�CheckConnectionExecutemanys

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/r'r2rJrr.r
r
r�CheckConnectionExecutescript	s

z+ExtensionTests.CheckConnectionExecutescriptN)
r'r(r)r(r+r,r-r0r2r3r
r
r
rr&�s
r&c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�ClosedConTestscCsJt�d�}|��|�tj��|��}Wd�n1s<0YdS�Nr+)rr/r8rDr#r1r*r
r
r�CheckClosedConCursors
z#ClosedConTests.CheckClosedConCursorcCsJt�d�}|��|�tj��|��Wd�n1s<0YdSr5)rr/r8rDr#r;�r	rEr
r
r�CheckClosedConCommits
z#ClosedConTests.CheckClosedConCommitcCsJt�d�}|��|�tj��|��Wd�n1s<0YdSr5)rr/r8rDr#r?r7r
r
r�CheckClosedConRollbacks
z%ClosedConTests.CheckClosedConRollbackcCsTt�d�}|��}|��|�tj��|�d�Wd�n1sF0YdS)Nr+zselect 4)rr/r1r8rDr#r2r*r
r
r�CheckClosedCurExecute"s

z$ClosedConTests.CheckClosedCurExecutecCsXt�d�}|��dd�}|�tj��|�dd|�Wd�n1sJ0YdS)Nr+cSsdS�Nr�r
)r�r
r
rr�,rdz3ClosedConTests.CheckClosedCreateFunction.<locals>.fr.r
)rr/r8rDr#Zcreate_function)r	rEr�r
r
r�CheckClosedCreateFunction)s

z(ClosedConTests.CheckClosedCreateFunctioncCs^t�d�}|��Gdd�d�}|�tj��|�dd|�Wd�n1sP0YdS)Nr+c@s$eZdZdd�Zdd�Zdd�ZdS)z6ClosedConTests.CheckClosedCreateAggregate.<locals>.AggcSsdSr6r
rr
r
rr�4sz?ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.__init__cSsdSr6r
r�r
r
r�step6sz;ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.stepcSsdSr;r
rr
r
r�finalize8sz?ClosedConTests.CheckClosedCreateAggregate.<locals>.Agg.finalizeN)r'r(r)r�r=r>r
r
r
r�Agg3sr?r.r
)rr/r8rDr#Zcreate_aggregate)r	rEr?r
r
r�CheckClosedCreateAggregate0s

z)ClosedConTests.CheckClosedCreateAggregatecCsTt�d�}|��dd�}|�tj��|�|�Wd�n1sF0YdS)Nr+cWstjSr6)rZDENY)�argsr
r
r�
authorizer@sz;ClosedConTests.CheckClosedSetAuthorizer.<locals>.authorizer)rr/r8rDr#Zset_authorizer)r	rErBr
r
r�CheckClosedSetAuthorizer=s

z'ClosedConTests.CheckClosedSetAuthorizercCsVt�d�}|��dd�}|�tj��|�|d�Wd�n1sH0YdS)Nr+cSsdSr6r
r
r
r
r�progressHrdz?ClosedConTests.CheckClosedSetProgressCallback.<locals>.progressr�)rr/r8rDr#Zset_progress_handler)r	rErDr
r
r�CheckClosedSetProgressCallbackEs

z-ClosedConTests.CheckClosedSetProgressCallbackcCsHt�d�}|��|�tj��|�Wd�n1s:0YdSr5)rr/r8rDr#r7r
r
r�CheckClosedCallLs
zClosedConTests.CheckClosedCallN)r'r(r)r6r8r9r:r<r@rCrErFr
r
r
rr4s
r4c@seZdZdd�ZdS)�ClosedCurTestsc	Cs�t�d�}|��}|��dD]j}|dvr0d}n|dkrFdddgf}ng}|�tj��"t||�}||�Wd�q1s~0YqdS)	Nr+)r2r�r'r�r�rJ)r2r')zselect 4 union select 5r�zinsert into foo(bar) values (?)r�r1)rr/r1r8rDr#�getattr)r	rEr�Zmethod_name�params�methodr
r
r�CheckClosedSs

zClosedCurTests.CheckClosedN)r'r(r)rKr
r
r
rrGRsrGc@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
          );
        rjrr
r
rr5lszSqliteOnConflictTests.setUpcCs|j��|j��dSr6rkrr
r
rr9us
zSqliteOnConflictTests.tearDowncCs�d|j_|j��|_|j�d�|j�d�|j�d�|�tj��|j�d�Wd�n1sf0Y|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�r0rbr1r4r2rDrrr;rr�rr
r
r�.CheckOnConflictRollbackWithExplicitTransactionys*
zDSqliteOnConflictTests.CheckOnConflictRollbackWithExplicitTransactioncCs�d|j_|j��|_|j�d�|j�d�|j�d�|�tj��|j�d�Wd�n1sf0Y|j��|j�d�|�	|j�
�ddg�dS)NrMrN�5INSERT OR ABORT INTO test(unique_name) VALUES ('foo')�"SELECT name, unique_name FROM test�Z
abort_testNr�rPrr
r
r�2CheckOnConflictAbortRaisesWithExplicitTransactions�s*
zHSqliteOnConflictTests.CheckOnConflictAbortRaisesWithExplicitTransactionscCsr|j�d�|j�d�|�tj��|j�d�Wd�n1sF0Y|j�d�|�|j��g�dS)NrNrOrS�r4r2rDrrrr�rr
r
r�)CheckOnConflictRollbackWithoutTransaction�s*z?SqliteOnConflictTests.CheckOnConflictRollbackWithoutTransactioncCsv|j�d�|j�d�|�tj��|j�d�Wd�n1sF0Y|j�d�|�|j��ddg�dS)NrNrRrSrTr�rVrr
r
r�-CheckOnConflictAbortRaisesWithoutTransactions�s*zCSqliteOnConflictTests.CheckOnConflictAbortRaisesWithoutTransactionscCsZ|j�d�|�tj��|j�d�Wd�n1s:0Y|�|j��g�dS)Nz4INSERT OR FAIL INTO test(unique_name) VALUES ('foo')rVrr
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-�r4r2rr�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')rS)zVery different data!r.rZrr
r
r�CheckOnConflictReplace�sz,SqliteOnConflictTests.CheckOnConflictReplaceN)
r'r(r)�__doc__r5r9rQrUrWrXrYr[r\r
r
r
rrLes	
rLc@s$eZdZedZdd�Zdd�ZdS)�MultiprocessTestsg@�@cCstt�dSr6)rrrr
r
rr9�szMultiprocessTests.tearDownc
CsNdt�d|j�d�}tjtjd|gddtjtjd�}|�|j�|�	d|j
�����t
jt|jd	�}z�z2|�|�d
�Wd�n1s�0YWn6t
jy�}z|j�t|��WYd}~nd}~00|j�d�W|��n
|��0|�|j�z|jdtd
�Wn(tj�y:|��|���Yn0|�	|jd�dS)Nz�if 1:
            import sqlite3
            def wait():
                print("started")
                assert "database is locked" in input()

            cx = sqlite3.connect("z", timeout=a�)
            cx.create_function("wait", 0, wait)
            with cx:
                cx.execute("create table t(t)")
            try:
                # execute two transactions; both will try to lock the db
                cx.executescript('''
                    -- start a transaction and wait for parent
                    begin transaction;
                    select * from t;
                    select wait();
                    rollback;

                    -- start a new transaction; would fail if parent holds lock
                    begin transaction;
                    select * from t;
                    rollback;
                ''')
            finally:
                cx.close()
        z-czutf-8r)�encoding�bufsize�stdin�stdout�started)�timeoutzinsert into t values('test')zno error�end)�inputrd)r�CONNECTION_TIMEOUT�
subprocess�Popen�sys�
executable�PIPErR�communicaterrb�readline�striprr/r2rra�writerYr8ZassertIsNone�
returncoder�TimeoutExpired�kill)r	ZSCRIPT�procr0�excr
r
r�&test_ctx_mgr_rollback_if_commit_failed�s<��
�,&z8MultiprocessTests.test_ctx_mgr_rollback_if_commit_failedN)r'r(r)rrgr9rvr
r
r
rr^�sr^c
Cs�t�td�}t�td�}t�td�}t�td�}t�td�}t�td�}t�td�}t�t	d�}t�t
d�}t�t�}	t�t�}
t�
||||||||||	|
f�S)NZCheck)r^Z	makeSuiterr*rir�rr&r4rGrLr_r^Z	TestSuite)Zmodule_suiteZconnection_suiteZcursor_suiteZthread_suiteZconstructor_suiteZ	ext_suiteZclosed_con_suiteZclosed_cur_suiteZon_conflict_suiteZuninit_con_suiteZmultiproc_con_suiter
r
r�suite	s 

�rwcCst��}|�t��dSr6)r^ZTextTestRunnerr�rw)Zrunnerr
r
rr�sr��__main__)rhr�r^Zsqlite3rrjZtest.supportrrrZTestCaserr*r_rir�rr&r4rGrLr^rwr�r'r
r
r
r�<module>s.7nP4C]G


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists