f
��_� c @ sx d dl Z d dlZd dlZdd� ZG dd� dej�ZG dd� dej�ZG dd � d ej�Zd
d� Z dd
� Z
edkrte
� dS )� Nc C s dS )NZ
sqlite_testdb� r r r �2/usr/lib64/python3.10/sqlite3/test/transactions.py�get_db_path � r c @ sd e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zdd� Zdd� Z
dS )�TransactionTestsc C sd zt �t� � W n ty" Y n0 tjt� dd�| _| j�� | _tjt� dd�| _ | j �� | _
d S )Ng�������?)Ztimeout)�osZremover �OSError�sqlite�connect�con1�cursor�cur1�con2�cur2��selfr r r �setUp s zTransactionTests.setUpc C sP | j �� | j�� | j�� | j�� zt�t� � W n tyJ Y n0 d S �N) r �closer
r r
r Zunlinkr r r r r r �tearDown+ s
zTransactionTests.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)zcreate table test2(j)�select i from testr �r �executer �fetchall�assertEqual�len�r Zresr r r �CheckDMLDoesNotAutoCommitBefore7 s
z0TransactionTests.CheckDMLDoesNotAutoCommitBeforec C sB | j �d� | j �d� | j�d� | j�� }| �t|�d� d S )Nr r r r r r r r r �CheckInsertStartsTransaction? s
z-TransactionTests.CheckInsertStartsTransactionc C sX | j �d� | j �d� | j�� | j �d� | j�d� | j�� d }| �|d� d S )Nr r zupdate test set i=6r r � )r r r
�commitr Zfetchoner r r r r �CheckUpdateStartsTransactionF s
z-TransactionTests.CheckUpdateStartsTransactionc C sX | j �d� | j �d� | j�� | j �d� | j�d� | j�� }| �t|�d� d S )Nr r zdelete from testr � �r r r
r! r r r r r r r r �CheckDeleteStartsTransactionO s
z-TransactionTests.CheckDeleteStartsTransactionc C sl | j �d� | j �d� | j�� | j �d� | j�d� | j�� }| �t|�d� | �|d d d� d S )Nr r zreplace into test(i) values (6)r r# r r r$ r r r r �CheckReplaceStartsTransactionX s
z.TransactionTests.CheckReplaceStartsTransactionc C s� | j �d� | j �d� d | j_| �| jjd � | j�d� | j�� }| �t|�d� d| j_| �| jjd� | j �d� | j�d� | j�� }| �t|�d� d S )Nr r r r# ZDEFERRED)r r r
Zisolation_levelr r r r r r r r �CheckToggleAutoCommitb s
z&TransactionTests.CheckToggleAutoCommitc C sT | j �d� | j �d� | �tj�� | j�d� W d � n1 sF0 Y d S )Nr r )r r �assertRaisesr �OperationalErrorr r r r r �CheckRaiseTimeoutr s z"TransactionTests.CheckRaiseTimeoutc C s^ | j �d� | j �d� | �tj�� | j�d� W d � n1 sF0 Y | j�� dS )z�
This tests the improved concurrency with pysqlite 2.3.4. You needed
to roll back con2 before you could commit con1.
r r N)r r r( r r) r r
r! r r r r �CheckLockingx s
*zTransactionTests.CheckLockingc C sp t �d�}|�� }|�d� |�d� |�d� |�� | �t j�� |�� W d � n1 sb0 Y dS )z�
Checks if cursors on the connection are set into a "reset" state
when a rollback is done on the connection.
�:memory:zcreate table test(x)zinsert into test(x) values (5)z&select 1 union select 2 union select 3N)r r r r �rollbackr( ZInterfaceErrorr )r �con�curr r r �CheckRollbackCursorConsistency� s
z/TransactionTests.CheckRollbackCursorConsistencyN)�__name__�
__module__�__qualname__r r r r r"