o
    GXîh7  ã                   @   s˜   d dl Z d dlZd dlZd dlmZ d dlmZmZ ed Z	G dd„ dej
ƒZG dd„ dej
ƒZG d	d
„ d
ej
ƒZdd„ Zdd„ ZedkrJeƒ  dS dS )é    N)ÚLOOPBACK_TIMEOUT)ÚTESTFNÚunlinké
   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚTransactionTestsc                 C   s<   t jttd| _| j ¡ | _t jttd| _| j ¡ | _d S )N)Útimeout)	ÚsqliteÚconnectr   ÚTIMEOUTÚcon1ÚcursorÚcur1Úcon2Úcur2©Úself© r   úC/opt/python-3.10.19/usr/lib/python3.10/sqlite3/test/transactions.pyÚsetUp"   s   zTransactionTests.setUpc                 C   sB   z| j  ¡  | j ¡  | j ¡  | j ¡  W ttƒ d S ttƒ w ©N)r   Úcloser   r   r   r   r   r   r   r   r   ÚtearDown)   s   


zTransactionTests.tearDownc                 C   sN   | j  d¡ | j  d¡ | j  d¡ | j d¡ | j ¡ }|  t|ƒd¡ d S )Núcreate table test(i)úinsert into test(i) values (5)zcreate table test2(j)úselect i from testr   ©r   Úexecuter   ÚfetchallÚassertEqualÚlen©r   Úresr   r   r   Ú$test_dml_does_not_auto_commit_before4   s   
z5TransactionTests.test_dml_does_not_auto_commit_beforec                 C   sB   | j  d¡ | j  d¡ | j d¡ | j ¡ }|  t|ƒd¡ d S )Nr   r   r   r   r   r    r   r   r   Útest_insert_starts_transaction<   s
   
z/TransactionTests.test_insert_starts_transactionc                 C   sX   | j  d¡ | j  d¡ | j ¡  | j  d¡ | j d¡ | j ¡ d }|  |d¡ d S )Nr   r   zupdate test set i=6r   r   é   )r   r   r   Úcommitr   Zfetchoner   r    r   r   r   Útest_update_starts_transactionC   s   
z/TransactionTests.test_update_starts_transactionc                 C   sX   | j  d¡ | j  d¡ | j ¡  | j  d¡ | j d¡ | j ¡ }|  t|ƒd¡ d S )Nr   r   zdelete from testr   é   ©r   r   r   r%   r   r   r   r   r    r   r   r   Útest_delete_starts_transactionL   s   

z/TransactionTests.test_delete_starts_transactionc                 C   sl   | j  d¡ | j  d¡ | j ¡  | j  d¡ | j d¡ | j ¡ }|  t|ƒd¡ |  |d d d¡ d S )Nr   r   zreplace into test(i) values (6)r   r'   r   r$   r(   r    r   r   r   Útest_replace_starts_transactionU   s   

z0TransactionTests.test_replace_starts_transactionc                 C   s¤   | j  d¡ | j  d¡ d | j_|  | jjd ¡ | j d¡ | j ¡ }|  t|ƒd¡ d| j_|  | jjd¡ | j  d¡ | j d¡ | j ¡ }|  t|ƒd¡ d S )Nr   r   r   r'   ZDEFERRED)r   r   r   Zisolation_levelr   r   r   r   r    r   r   r   Útest_toggle_auto_commit_   s   

z(TransactionTests.test_toggle_auto_commitc                 C   sV   | j  d¡ | j  d¡ |  tj¡ | j d¡ W d   ƒ d S 1 s$w   Y  d S ©Nr   r   )r   r   ÚassertRaisesr   ÚOperationalErrorr   r   r   r   r   Útest_raise_timeouto   s
   "ÿz#TransactionTests.test_raise_timeoutc                 C   s`   	 | j  d¡ | j  d¡ |  tj¡ | j d¡ W d   ƒ n1 s$w   Y  | j ¡  d S r,   )r   r   r-   r   r.   r   r   r%   r   r   r   r   Útest_lockingu   s   ÿzTransactionTests.test_lockingc                 C   st   	 t  d¡}| ¡ }| d¡ | d¡ | d¡ | ¡  |  t j¡ | ¡  W d   ƒ d S 1 s3w   Y  d S )Nú:memory:zcreate table test(x)zinsert into test(x) values (5)z&select 1 union select 2 union select 3)r   r	   r   r   Úrollbackr-   ZInterfaceErrorr   )r   ÚconÚcurr   r   r   Ú test_rollback_cursor_consistency   s   




"ÿz1TransactionTests.test_rollback_cursor_consistencyN)Ú__name__Ú
__module__Ú__qualname__r   r   r"   r#   r&   r)   r*   r+   r/   r0   r5   r   r   r   r   r   !   s    		
r   c                   @   s,   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	S )
ÚSpecialCommandTestsc                 C   s   t  d¡| _| j ¡ | _d S ©Nr1   )r   r	   r3   r   r4   r   r   r   r   r   ‘   s   zSpecialCommandTests.setUpc                 C   ó(   | j  d¡ | j  d¡ | j  d¡ d S )Nr   r   zdrop table test©r4   r   r   r   r   r   Útest_drop_table•   ó   z#SpecialCommandTests.test_drop_tablec                 C   r;   )Nr   r   zpragma count_changes=1r<   r   r   r   r   Útest_pragmaš   r>   zSpecialCommandTests.test_pragmac                 C   s   | j  ¡  | j ¡  d S r   )r4   r   r3   r   r   r   r   r   Ÿ   s   
zSpecialCommandTests.tearDownN)r6   r7   r8   r   r=   r?   r   r   r   r   r   r9      s
    r9   c                   @   s4   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ ZdS )ÚTransactionalDDLc                 C   s   t  d¡| _d S r:   )r   r	   r3   r   r   r   r   r   ¤   s   zTransactionalDDL.setUpc                 C   s6   | j  d¡ | j  ¡  | j  d¡ ¡ }|  |g ¡ d S )Nr   úselect * from test)r3   r   r2   r   r   )r   Úresultr   r   r   Ú'test_ddl_does_not_autostart_transaction§   s   
z8TransactionalDDL.test_ddl_does_not_autostart_transactionc                 C   ó`   | j  d¡ | j  d¡ | j  ¡  |  tj¡ | j  d¡ W d   ƒ d S 1 s)w   Y  d S )Nzbegin immediater   rA   ©r3   r   r2   r-   r   r.   r   r   r   r   Ú test_immediate_transactional_ddl¯   ó   
"ÿz1TransactionalDDL.test_immediate_transactional_ddlc                 C   rD   )NZbeginr   rA   rE   r   r   r   r   Útest_transactional_ddl¸   rG   z'TransactionalDDL.test_transactional_ddlc                 C   s   | j  ¡  d S r   )r3   r   r   r   r   r   r   Á   s   zTransactionalDDL.tearDownN)r6   r7   r8   r   rC   rF   rH   r   r   r   r   r   r@   £   s    		r@   c                  C   s   t ttg} t dd„ | D ƒ¡S )Nc                 S   s   g | ]	}t  ¡  |¡‘qS r   )ÚunittestZ
TestLoaderZloadTestsFromTestCase)Ú.0Útr   r   r   Ú
<listcomp>Ë   s    zsuite.<locals>.<listcomp>)r9   r   r@   rI   Z	TestSuite)Ztestsr   r   r   ÚsuiteÄ   s   ýÿrM   c                  C   s   t  ¡ } |  tƒ ¡ d S r   )rI   ZTextTestRunnerÚrunrM   )Zrunnerr   r   r   ÚtestÎ   s   rO   Ú__main__)ÚosrI   Zsqlite3r   Ztest.supportr   Ztest.support.os_helperr   r   r
   ZTestCaser   r9   r@   rM   rO   r6   r   r   r   r   Ú<module>   s   o!

ÿ