HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/sqlite3/test/__pycache__/userfunctions.cpython-310.opt-2.pyc
o

�ixL�@svddlZddlZddlZddlmZdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd �d �ZGd!d"�d"�ZGd#d$�d$�ZGd%d&�d&�ZGd'd(�d(ej�ZGd)d*�d*ej�ZGd+d,�d,ej�ZGd-d.�d.e�ZGd/d0�d0e�ZGd1d2�d2e�Zd3d4�Zd5d6�Z e!d7kr�e �dSdS)8�N)�
gc_collectcC�dS)N�foo�rrr�7/usr/local/lib/python3.10/sqlite3/test/userfunctions.py�func_returntext�rcCr)N�12rrrrr�func_returntextwithnull!rr
cCr)N�barrrrrr�func_returnunicode#rrcCr�N�*rrrrr�func_returnint%rrcCr)N���Q�	@rrrrr�func_returnfloat'rrcC�dS�Nrrrrr�func_returnnull)rrcCr)N�blobrrrrr�func_returnblob+rrcCr)N�rrrrr�func_returnlonglong-rrcC�dddS�N�rrrrrr�func_raiseexception/�rc@�eZdZdd�Zdd�ZdS)�
AggrNoStepcCrrr��selfrrr�__init__3rzAggrNoStep.__init__cCr�N�rr rrr�finalize6rzAggrNoStep.finalizeN)�__name__�
__module__�__qualname__r"r%rrrrr2�rc@r)�AggrNoFinalizecCrrrr rrrr":rzAggrNoFinalize.__init__cCrrr�r!�xrrr�step=rzAggrNoFinalize.stepN)r&r'r(r"r-rrrrr*9r)r*c@�$eZdZdd�Zdd�Zdd�ZdS)�AggrExceptionInInitcCrrrr rrrr"ArzAggrExceptionInInit.__init__cCrrrr+rrrr-DrzAggrExceptionInInit.stepcCrrrr rrrr%GrzAggrExceptionInInit.finalizeN�r&r'r(r"r-r%rrrrr/@�r/c@r.)�AggrExceptionInStepcCrrrr rrrr"KrzAggrExceptionInStep.__init__cCrrrr+rrrr-NrzAggrExceptionInStep.stepcCrr
rr rrrr%QrzAggrExceptionInStep.finalizeNr0rrrrr2Jr1r2c@r.)�AggrExceptionInFinalizecCrrrr rrrr"Urz AggrExceptionInFinalize.__init__cCrrrr+rrrr-XrzAggrExceptionInFinalize.stepcCrrrr rrrr%[rz AggrExceptionInFinalize.finalizeNr0rrrrr3Tr1r3c@r.)�
AggrCheckTypecCs
d|_dSr��valr rrrr"_�
zAggrCheckType.__init__cCs.ttttd�td�}t||t|�u�|_dS�N)�str�int�float�NoneZblob�r9r:r;�type�bytesr6)r!�	whichTyper6�theTyperrrr-bs�zAggrCheckType.stepcC�|jSrr5r rrrr%g�zAggrCheckType.finalizeNr0rrrrr4^sr4c@r.)�AggrCheckTypescC�
d|_dS)Nrr5r rrrr"kr7zAggrCheckTypes.__init__cGs@ttttd�td�}|D]}|jt||t|�u�7_qdSr8r=)r!r@ZvalsrAr6rrrr-ns� �zAggrCheckTypes.stepcCrBrr5r rrrr%trCzAggrCheckTypes.finalizeNr0rrrrrDjsrDc@r.)�AggrSumcCrE)N�r5r rrrr"xr7zAggrSum.__init__cCs|j|7_dSrr5)r!r6rrrr-{szAggrSum.stepcCrBrr5r rrrr%~rCzAggrSum.finalizeNr0rrrrrFwr1rFc@r.)�AggrTextcCrE)N���txtr rrrr"�r7zAggrText.__init__cCs|j||_dSrrJ)r!rKrrrr-�sz
AggrText.stepcCrBrrJr rrrr%�rCzAggrText.finalizeNr0rrrrrH�srHc@seZdZdd�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,�Ze�ejd-kd.�d/d0��Ze�ejd-kd.�d1d2��Ze�ejd-kd3�d4d5��Zd6d7�Z d8d9�Z!d:S);�
FunctionTestscCst�d�|_|j�ddt�|j�ddt�|j�ddt�|j�ddt�|j�ddt�|j�ddt	�|j�d	dt
�|j�d
dt�|j�dddd
��|j�dddd
��|j�ddt�|j�dddd
��|j�dddd
��|j�dddd
��|j�
d�dS)N�:memory:Z
returntextrZreturntextwithnullZ
returnunicodeZ	returnintZreturnfloatZ
returnnullZ
returnblobZreturnlonglongZ	returnnancSstd�S)N�nan)r;rrrr�<lambda>��z%FunctionTests.setUp.<locals>.<lambda>ZreturntoolargeintcSr)N� rrrrrrO�sZraiseexceptionZisblobr$cSs
t|t�Sr)�
isinstancer?�r,rrrrO�s
ZisnonecSs|duSrrrSrrrrO�rPZspam���cWst|�Sr)�lenrSrrrrO�rPzcreate table test(t text))�sqlite�connect�con�create_functionrr
rrrrrrr�executer rrr�setUp�s zFunctionTests.setUpcCs|j��dSr)rX�closer rrr�tearDown�szFunctionTests.tearDowncCsF|�tj��|j�dddd��Wd�dS1swYdS)N�bla���cSsd|S)N�rrSrrrrO�rPz9FunctionTests.test_func_error_on_create.<locals>.<lambda>)�assertRaisesrV�OperationalErrorrXrYr rrr�test_func_error_on_create�s"�z'FunctionTests.test_func_error_on_createcCs@dd�}|�}|t�d<|j�dd|�|j��}|�d�dS)NcSsdd�}|S)NcSrr#rrrrr�f�rz=FunctionTests.test_func_ref_count.<locals>.getfunc.<locals>.fr)rdrrr�getfunc�sz2FunctionTests.test_func_ref_count.<locals>.getfuncrZreftestrzselect reftest())�globalsrXrY�cursorrZ)r!rerd�currrr�test_func_ref_count�s

z!FunctionTests.test_func_ref_countcC�@|j��}|�d�|��d}|�t|�t�|�|d�dS)Nzselect returntext()rr�rXrgrZ�fetchone�assertEqualr>r9�r!rhr6rrr�test_func_return_text��


z#FunctionTests.test_func_return_textcCs<|j��}|�d���d}|�t|�t�|�|d�dS)Nzselect returntextwithnull()rr	rk)r!rh�resrrr�$test_func_return_text_with_null_char�s
z2FunctionTests.test_func_return_text_with_null_charcCrj)Nzselect returnunicode()rrrkrnrrr�test_func_return_unicode�rpz&FunctionTests.test_func_return_unicodecCrj)Nzselect returnint()rr)rXrgrZrlrmr>r:rnrrr�test_func_return_int�rpz"FunctionTests.test_func_return_intcCsR|j��}|�d�|��d}|�t|�t�|dks |dkr'|�d�dSdS)Nzselect returnfloat()rg�&1�	@gT㥛� 	@zwrong value)rXrgrZrlrmr>r;�failrnrrr�test_func_return_float�s

�z$FunctionTests.test_func_return_floatcCsD|j��}|�d�|��d}|�t|�td��|�|d�dS)Nzselect returnnull()r)rXrgrZrlrmr>rnrrr�test_func_return_null�s


z#FunctionTests.test_func_return_nullcCrj)Nzselect returnblob()rr)rXrgrZrlrmr>r?rnrrr�test_func_return_blob�rpz#FunctionTests.test_func_return_blobcCs0|j��}|�d�|��d}|�|d�dS)Nzselect returnlonglong()rr�rXrgrZrlrmrnrrr�test_func_return_long_long�s

z(FunctionTests.test_func_return_long_longcCs*|j��}|�d�|�|��d�dS)Nzselect returnnan()r)rXrgrZ�assertIsNonerl�r!rhrrr�test_func_return_nan�s

z"FunctionTests.test_func_return_nancCsH|j��}|�tj��|j�d�Wd�dS1swYdS)Nzselect returntoolargeint())rXrgrarVrbrZr|rrr�test_func_return_too_large_int�s
"�z,FunctionTests.test_func_return_too_large_intcCs^|j��}|�tj��}|�d�|��Wd�n1swY|�t|j	�d�dS)Nzselect raiseexception()z&user-defined function raised exception�
rXrgrarVrbrZrlrmr9�	exception�r!rh�cmrrr�test_func_exception�s


�z!FunctionTests.test_func_exceptioncC�2|j��}|�dd�|��d}|�|d�dS)Nzselect spam(?, ?))r$r`rr`ryrnrrr�test_any_arguments��
z FunctionTests.test_any_argumentscCs"|j�d�}|�|��d�dS)Nzselect isblob(x'')r)rXrZ�
assertTruerlr|rrr�test_empty_blobszFunctionTests.test_empty_blobcCs*|j�dtd�f�}|�|��d�dS)Nzselect isnone(?)rNr)rXrZr;r�rlr|rrr�test_nan_floatszFunctionTests.test_nan_floatcCsd}|�t||jjdd�dS)Nz1Python int too large to convert to SQLite INTEGER�select spam(?))rQ)�assertRaisesRegex�
OverflowErrorrXrZ)r!�errrrr�test_too_large_int	s�z FunctionTests.test_too_large_intc
Cs*|�td|jjdtd�ddd�f�dS)Nz could not convert BLOB to bufferr�rr`)r��
ValueErrorrXrZ�
memoryviewr rrr�test_non_contiguous_blobs�z&FunctionTests.test_non_contiguous_blobcCs|�td|jjdd�dS)Nzsurrogates not allowedr�)u��)r��UnicodeEncodeErrorrXrZr rrr�test_param_surrogatess�z#FunctionTests.test_param_surrogatescs�g��fdd�}|j�dd|�dtfdtfdtfdtfd	tftd
�tfdtfdtfd
tfdtfttd��tftd�tfdt	d�fg
}|D]\}}|j�
d|f�}|��qE|�|��dS)Ncs��|t|�f�dSr)�appendr>)�arg��resultsrr�
append_resultsz5FunctionTests.test_func_params.<locals>.append_resultZtest_paramsr$rrTl�{�C	lr�inf�textr	uˢqˡⁱᵗᵉrr`zselect test_params(?))
rXrYr:r;r9r?�	bytearray�ranger�r>rZrlrm)r!r�Zdatasetr6�_rhrr�r�test_func_paramss*


�
zFunctionTests.test_func_params)��r�zRequires SQLite 3.8.3 or highercCs�tjjdd�}|jjdd|dd�tjdkr%|j�d�|�|j	d�dS|�
tj��|j�d	�Wd�dS1s=wYdS)
N�Zreturn_valueZnondeterministicrF��
deterministic�r��rz.select nondeterministic() = nondeterministic()r`z>create index t on test(t) where nondeterministic() is not null)�unittest�mock�MockrXrYrV�sqlite_version_inforZrm�
call_countrarb�r!r�rrr�test_func_non_deterministic9s
"�z)FunctionTests.test_func_non_deterministiccCs~tjjdd�}|jjdd|dd�tjdkr%|j�d�|�|j	d�dSz	|j�d	�WdStj
y>|�d
�YdSw)Nr�r�rTr�r�z(select deterministic() = deterministic()r$z;create index t on test(t) where deterministic() is not nullz/Unexpected failure while creating partial index)r�r�r�rXrYrVr�rZrmr�rbrur�rrr�test_func_deterministicDs
�z%FunctionTests.test_func_deterministiczSQLite < 3.8.3 neededcCsF|�tj��|jjddtdd�Wd�dS1swYdS)Nr�rTr�)rarVZNotSupportedErrorrXrYr:r rrr�%test_func_deterministic_not_supportedQs"�z3FunctionTests.test_func_deterministic_not_supportedcCsB|�t��|j�ddtd�Wd�dS1swYdS)Nr�rT)ra�	TypeErrorrXrYr:r rrr�$test_func_deterministic_keyword_onlyVs"�z2FunctionTests.test_func_deterministic_keyword_onlycCsJt�d�}dd�}|�dd|�|d�}~~|g}|�|�~~t�dS)NrMcSrrr)�trrr�md5sum^rz=FunctionTests.test_function_destructor_via_gc.<locals>.md5sum�md5r$z(create table lang (name, first_appeared))rVrWrYr�r)r!�destr�r,�yrrr�test_function_destructor_via_gcZs


z-FunctionTests.test_function_destructor_via_gcN)"r&r'r(r[r]rcrirorrrsrtrvrwrxrzr}r~r�r�r�r�r�r�r�r�r�ZskipIfrVr�r�r�r�r�r�rrrrrL�s>!



rLc@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#S)$�AggregateTestsc	Cs�t�d�|_|j��}|�d�|�dddddtd�f�|j�dd	t�|j�d
d	t�|j�dd	t	�|j�dd	t
�|j�d
d	t�|j�ddt�|j�ddt
�|j�dd	t�|j�dd	t�dS)NrMz�
            create table test(
                t text,
                i integer,
                f float,
                n,
                b blob
                )
            z6insert into test(t, i, f, n, b) values (?, ?, ?, ?, ?)rrrrZnostepr$Z
nofinalizeZexcInitZexcStepZexcFinalizeZ	checkTyper`Z
checkTypesrTZmysumZaggtxt)rVrWrXrgrZr�Zcreate_aggregaterr*r/r2r3r4rDrFrHr|rrrr[ls

	�zAggregateTests.setUpcCrrrr rrrr]�szAggregateTests.tearDowncCsB|�tj��|j�ddt�Wd�dS1swYdS)Nr^r_)rarVrbrXrYrFr rrr�test_aggr_error_on_create�s"�z(AggregateTests.test_aggr_error_on_createcCsT|j��}|�t��
}|�d�Wd�n1swY|�t|j�d�dS)Nzselect nostep(t) from testz+'AggrNoStep' object has no attribute 'step')rXrgra�AttributeErrorrZrmr9r�r�rrr�test_aggr_no_step�s

�z AggregateTests.test_aggr_no_stepcC�b|j��}|�tj��}|�d�|��d}Wd�n1s!wY|�t|j	�d�dS)Nzselect nofinalize(t) from testr�7user-defined aggregate's 'finalize' method raised errorr�r!rhr�r6rrr�test_aggr_no_finalize��

�z$AggregateTests.test_aggr_no_finalizecCr�)Nzselect excInit(t) from testrz7user-defined aggregate's '__init__' method raised errorrr�rrr�test_aggr_exception_in_init�r�z*AggregateTests.test_aggr_exception_in_initcCr�)Nzselect excStep(t) from testrz3user-defined aggregate's 'step' method raised errorrr�rrr�test_aggr_exception_in_step�r�z*AggregateTests.test_aggr_exception_in_stepcCr�)Nzselect excFinalize(t) from testrr�rr�rrr�test_aggr_exception_in_finalize�r�z.AggregateTests.test_aggr_exception_in_finalizecCs8|j��}|�ddt�f�|��d}|�|d�dS)Nzselect checkTypes('str', ?, ?)rrr`)rXrgrZr9rlrmrnrrr�test_aggr_check_param_str��
z(AggregateTests.test_aggr_check_param_strcCr�)Nzselect checkType('int', ?))rrr$ryrnrrr�test_aggr_check_param_int�r�z(AggregateTests.test_aggr_check_param_intcCr�)Nzselect checkTypes('int', ?, ?))r�rr`ryrnrrr�test_aggr_check_params_int�r�z)AggregateTests.test_aggr_check_params_intcCr�)Nzselect checkType('float', ?))rrr$ryrnrrr�test_aggr_check_param_float�r�z*AggregateTests.test_aggr_check_param_floatcCr�)Nzselect checkType('None', ?)rrr$ryrnrrr�test_aggr_check_param_none�r�z)AggregateTests.test_aggr_check_param_nonecCs8|j��}|�dtd�f�|��d}|�|d�dS)Nzselect checkType('blob', ?)rrr$)rXrgrZr�rlrmrnrrr�test_aggr_check_param_blob�r�z)AggregateTests.test_aggr_check_param_blobcCsJ|j��}|�d�|�dgd��|�d�|��d}|�|d�dS)Nzdelete from testzinsert into test(i) values (?)))�
)�)�zselect mysum(i) from testr�<)rXrgrZZexecutemanyrlrmrnrrr�test_aggr_check_aggr_sum�s


z'AggregateTests.test_aggr_check_aggr_sumcCs&|j�d�}|��d}|�|�dS)Nz1select mysum(i) from (select 1 as i) where i == 0r)rXrZrlr{rnrrr�test_aggr_no_match�sz!AggregateTests.test_aggr_no_matchc	Csj|j��}dD]+}|j|d��|�d|f�|��d}|�||�Wd�n1s-wYqdS)N)rr	rJzselect aggtxt(?) from testr)rXrgZsubTestrZrlrm)r!rhrKr6rrr�test_aggr_text�s
���zAggregateTests.test_aggr_textN)r&r'r(r[r]r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�ks$r�c@s8eZdZedd��Zdd�Zdd�Zdd�Zd	d
�ZdS)�AuthorizerTestscCs,|tjkrtjS|dks|dkrtjStjS�N�c2�t2)rV�
SQLITE_SELECTZSQLITE_DENY�	SQLITE_OK��actionZarg1Zarg2Zdbname�sourcerrr�
authorizer_cb�s

zAuthorizerTests.authorizer_cbcCs6t�d�|_|j�d�|j�d�|j�|j�dS)NrMz�
            create table t1 (c1, c2);
            create table t2 (c1, c2);
            insert into t1 (c1, c2) values (1, 2);
            insert into t2 (c1, c2) values (4, 5);
            zselect c2 from t2)rVrWrXZ
executescriptrZZset_authorizerr�r rrrr[�szAuthorizerTests.setUpcCrrrr rrrr]rzAuthorizerTests.tearDowncC�N|�tj��}|j�d�Wd�n1swY|�dt|j��dS)Nzselect * from t2�
prohibited�rarVZ
DatabaseErrorrXrZZassertInr9r��r!r�rrr�test_table_access��z!AuthorizerTests.test_table_accesscCr�)Nzselect c2 from t1r�r�r�rrr�test_column_access	r�z"AuthorizerTests.test_column_accessN)	r&r'r(�staticmethodr�r[r]r�r�rrrrr��s
r�c@�eZdZedd��ZdS)�AuthorizerRaiseExceptionTestscCs(|tjkrt�|dks|dkrt�tjSr�)rVr�r�r�r�rrrr��

z+AuthorizerRaiseExceptionTests.authorizer_cbN�r&r'r(r�r�rrrrr��r�c@r�)�AuthorizerIllegalTypeTestscC�(|tjkrdS|dks|dkrdStjS)NrGr�r��rVr�r�r�rrrr�r�z(AuthorizerIllegalTypeTests.authorizer_cbNr�rrrrr�r�r�c@r�)�AuthorizerLargeIntegerTestscCr�)Nlr�r�r�r�rrrr�!r�z)AuthorizerLargeIntegerTests.authorizer_cbNr�rrrrr� r�r�cCs$ttttttg}t�dd�|D��S)NcSsg|]	}t���|��qSr)r�Z
TestLoaderZloadTestsFromTestCase)�.0r�rrr�
<listcomp>4szsuite.<locals>.<listcomp>)r�r�r�r�r�rLr�Z	TestSuite)Ztestsrrr�suite*s��r�cCst��}|�t��dSr)r�ZTextTestRunner�runr�)Zrunnerrrr�test7sr��__main__)"r�Z
unittest.mockZsqlite3rVZtest.supportrrr
rrrrrrrrr*r/r2r3r4rDrFrHZTestCaserLr�r�r�r�r�r�r�r&rrrr�<module>sD




	b$		


�