o
    °ó®gZ  ã                   @   s|   d dl Z d dlZd dlZd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r<e
ƒ  dS dS )é    Nc                   C   s   dS )NZsqlite_testdb© r   r   r   úO/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/sqlite3/test/transactions.pyÚget_db_path   s   r   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   sd   zt  tƒ ¡ W n	 ty   Y nw tjtƒ dd| _| j ¡ | _tjtƒ dd| _	| j	 ¡ | _
d S )Ngš™™™™™¹?)Útimeout)ÚosÚremover   ÚOSErrorÚsqliteÚconnectÚcon1ÚcursorÚcur1Úcon2Úcur2©Úselfr   r   r   ÚsetUp   s   ÿzTransactionTests.setUpc                 C   sP   | j  ¡  | j ¡  | j ¡  | j ¡  z	t tƒ ¡ W d S  ty'   Y d S w ©N)	r   Úcloser   r   r   r   Úunlinkr   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_before6   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_transactionE   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_transactionN   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_transactionW   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_commita   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_timeoutq   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_lockingw   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__)r   rI   Zsqlite3r
   r   ZTestCaser   r9   r@   rM   rO   r6   r   r   r   r   Ú<module>   s   u!

ÿ