
    +he.                         d dl Z ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ dd	lm	Z	 dd
lm
Z
 ddlmZ ddlmZ  G d de      Zy)    N   )MigrationContext)assert_raises)config)eq_)is_)is_false)is_not_)is_true)ne_)TestBasec                       e Zd ZdZdZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zej(                  j*                  d        Zej(                  j*                  d        Zd Zd Zd Zy)MigrationTransactionTestTNc                    t         j                  j                         x| _        }|j	                  dd      rpt        j                  |j                  |      | _        t        j                         x| j                  _        | j                  j                  _        | j                  S t        j                  ||      | _        | j                  S )Nas_sqlF)dialectopts)
connectionr   )r   dbconnectconngetr   	configurer   contextioStringIOoutput_bufferimpl)selfr   r   s      Y/var/www/html/venv/lib/python3.12/site-packages/alembic/testing/suite/test_environment.py_fixturez!MigrationTransactionTest._fixture   s    !99,,..	D88He$+554DL DLL&):):)H || ,55dDL ||    c                 R    | j                   r| j                   j                          y y )N)r   close)r   s    r    teardown_methodz(MigrationTransactionTest.teardown_method$   s    99IIOO r"   c                 B   | j                  ddd      }t        | j                  j                                |j	                  d      }t        | j                  j                                |j                          t        | j                  j                                y NTtransaction_per_migrationtransactional_ddl_per_migration)r!   r	   r   in_transactionbegin_transactionr   rollbackr   r   proxys      r    test_proxy_transaction_rollbackz8MigrationTransactionTest.test_proxy_transaction_rollback(   sv    --*.TJ
 	))+,)))>		((*+))+,r"   c                     | j                  ddd      }|j                  d      }t        | j                  j	                                |j                          t        | j                  j	                                y r'   r!   r.   r   r   r-   commitr	   r0   s      r    test_proxy_transaction_commitz6MigrationTransactionTest.test_proxy_transaction_commit3   s`    --*.TJ
 )))>		((*+))+,r"   c                    | j                  ddd      }|j                  d      }t        | j                  j	                                |5  	 d d d        t        | j                  j	                                y # 1 sw Y   -xY wr'   )r!   r.   r   r   r-   r	   r0   s      r    ,test_proxy_transaction_contextmanager_commitzEMigrationTransactionTest.test_proxy_transaction_contextmanager_commit<   sr    --*.TJ
 )))>		((*+ 		))+,	 	s   A::Bc                    | j                  ddd      }|j                  d      t        | j                  j	                                fd}t        t        |       t        | j                  j	                                y )NTr(   r+   c                  8     5  t        d      # 1 sw Y   y xY w)Nhi)	Exception)r1   s   r    gozSMigrationTransactionTest.test_proxy_transaction_contextmanager_rollback.<locals>.goM   s      &o%& &s   )r!   r.   r   r   r-   r   r<   r	   )r   r   r=   r1   s      @r    .test_proxy_transaction_contextmanager_rollbackzGMigrationTransactionTest.test_proxy_transaction_contextmanager_rollbackF   si    --*.TJ
 )))>		((*+	& 	i$))+,r"   c                    | j                  ddd      }|j                  d      }t        | j                  j	                                |5  t        | j                  j	                                |j                          t        | j                  j	                                d d d        t        | j                  j	                                y # 1 sw Y   -xY wr'   )r!   r.   r   r   r-   r/   r	   r0   s      r    7test_proxy_transaction_contextmanager_explicit_rollbackzPMigrationTransactionTest.test_proxy_transaction_contextmanager_explicit_rollbackT   s    --*.TJ
 )))>		((*+ 	1DII,,./NNTYY--/0	1
 	))+,	1 	1   ACCc                    | j                  ddd      }|j                  d      }t        | j                  j	                                |5  t        | j                  j	                                |j                          t        | j                  j	                                d d d        t        | j                  j	                                y # 1 sw Y   -xY wr'   r4   r0   s      r    5test_proxy_transaction_contextmanager_explicit_commitzNMigrationTransactionTest.test_proxy_transaction_contextmanager_explicit_commitb   s    --*.TJ
 )))>		((*+ 	1DII,,./LLNTYY--/0	1
 	))+,	1 	1rA   c                 "   | j                  ddd      }t        | j                  j                                |j	                         5  t        | j                  j                                |j	                  d      5  t        | j                  j                                d d d        t        | j                  j                                d d d        t        | j                  j                                y # 1 sw Y   XxY w# 1 sw Y   9xY wr'   r!   r	   r   r-   r.   r   r   r   s     r    0test_transaction_per_migration_transactional_ddlzIMigrationTransactionTest.test_transaction_per_migration_transactional_ddlp   s    --*.TJ
 	))+,&&( 	1TYY--/0**$*? 4		00234 TYY--/0	1 	))+,	4 4	1 	1$   6D>$C9"+D9D	>DDc                 "   | j                  ddd      }t        | j                  j                                |j	                         5  t        | j                  j                                |j	                  d      5  t        | j                  j                                d d d        t        | j                  j                                d d d        t        | j                  j                                y # 1 sw Y   XxY w# 1 sw Y   9xY w)NTFr(   r+   rE   rF   s     r    4test_transaction_per_migration_non_transactional_ddlzMMigrationTransactionTest.test_transaction_per_migration_non_transactional_ddl   s    --*.UK
 	))+,&&( 	1TYY--/0**$*? 4		00234 TYY--/0	1 	))+,	4 4	1 	1rH   c                     | j                  ddi      }t        | j                  j                                |j	                         5  t        | j                  j                                |j	                  d      5  t        | j                  j                                d d d        t        | j                  j                                d d d        t        | j                  j                                y # 1 sw Y   XxY w# 1 sw Y   9xY w)Nr*   Tr+   rE   rF   s     r    *test_transaction_per_all_transactional_ddlzCMigrationTransactionTest.test_transaction_per_all_transactional_ddl   s    --!4d ;<))+,&&( 	0DII,,./**$*? 4		00234 DII,,./	0 	))+,	4 4	0 	0$   6D=$C8!+D8D	=DDc                     | j                  ddi      }t        | j                  j                                |j	                         5  t        | j                  j                                |j	                  d      5  t        | j                  j                                d d d        t        | j                  j                                d d d        t        | j                  j                                y # 1 sw Y   XxY w# 1 sw Y   9xY w)Nr*   FTr+   rE   rF   s     r    .test_transaction_per_all_non_transactional_ddlzGMigrationTransactionTest.test_transaction_per_all_non_transactional_ddl   s    --!4e <=))+,&&( 	1TYY--/0**$*? 4		00234 TYY--/0	1 	))+,	4 4	1 	1rM   c           	         | j                  ddi      }|j                  d       |j                         5  |j                  d       |j                  d      5  |j                  d       d d d        |j                  d       d d d        |j                  d       |j                  j                  r| j                  dd	dddd
d       y | j                  ddddd       y # 1 sw Y   wxY w# 1 sw Y   jxY w)Nr   Tstep 1step 2r+   step 3step 4step 5BEGINCOMMITr!   executer.   r   r*   _assert_impl_stepsrF   s     r     test_transaction_per_all_sqlmodez9MigrationTransactionTest.test_transaction_per_all_sqlmode   s    --4 01!&&( 	&OOH%**$*? *)* OOH%	& 	!<<))## ##(Hh#* *	& 	&s#   $C-C!+C-!C*	&C--C6c           	         | j                  ddd      }|j                  d       |j                         5  |j                  d       |j                  d      5  |j                  d       d d d        |j                  d       d d d        |j                  d       |j                  j                  r| j                  ddd	dd
dd       y | j                  ddddd       y # 1 sw Y   wxY w# 1 sw Y   jxY w)NT)r   r)   rQ   rR   r+   rS   rT   rU   rV   rW   rX   rF   s     r    &test_transaction_per_migration_sqlmodez?MigrationTransactionTest.test_transaction_per_migration_sqlmode   s    --$?
 	!&&( 	&OOH%**$*? *)* OOH%	& 	!<<))## ##(Hh#* *	& 	&s#   $C.C",C."C+	'C..C7c                 6   | j                  ddi      }t        | j                  j                                |j	                         5  t        | j                  j                                |j	                  d      5  t        | j                  j                                |j                         5  | j                  r!t        |j                  | j                         nCt        |j                  | j                         t        | j                  j                                t        |j                  j                  d   d       d d d        t        |j                  j                  j                  dd       d       t        | j                  j                                d d d        t        | j                  j                                d d d        t        | j                  j                                y # 1 sw Y   xY w# 1 sw Y   dxY w# 1 sw Y   ExY w)Nr)   Tr+   isolation_level
AUTOCOMMIT)r!   r	   r   r-   r.   r   autocommit_blockis_sqlalchemy_futurer   r   r
   r   _execution_optionsr   r   rF   s     r    test_autocommit_blockz.MigrationTransactionTest.test_autocommit_block   s   --!<d CD))+,&&( 	1TYY--/0**$*? 4		0023--/ 
 00G..		: 2 2DII> !9!9!;<**==- %	$ &&99==)4 !	 		002374: TYY--/0?	1@ 	))+,7 4 4	1 	1s>   6H=4H1BG7AH +H7H <HH	HHc                    | j                  ddi      }t        | j                  j                                |j	                         5  t        |j                  j                                | j                  r!t        |j                  | j                         nCt        |j                  | j                         t        | j                  j                                t        |j                  j                  d   d       d d d        t        |j                  j                  j                  dd       d       t        | j                  j                                y # 1 sw Y   ]xY w)Nr)   Tr_   r`   )r!   r	   r   r-   ra   r   r   rb   r   r
   r   rc   r   r   rF   s     r    $test_autocommit_block_no_transactionz=MigrationTransactionTest.test_autocommit_block_no_transaction  s   --!<d CD))+,%%' 	G&&5578
 ((G&&		2**DII61134""556GH	" 	11556GN	

 	))+,-	 	s   B7EE#c                    | j                  dddd      }|j                         5  |j                  d       |j                  d      5  |j                  d       |j                         5  |j                  d       d d d        |j                  d       d d d        |j                  d       d d d        | j	                  dd	dd
dd	dd
d	       y # 1 sw Y   UxY w# 1 sw Y   HxY w# 1 sw Y   ;xY w)NTr)   r*   r   rQ   r+   rR   rS   rT   rU   rV   rW   r!   r.   rY   ra   rZ   rF   s     r    /test_autocommit_block_transactional_ddl_sqlmodezHMigrationTransactionTest.test_autocommit_block_transactional_ddl_sqlmode&  s    ---1%)
 &&( 
	&OOH%**$*? *)--/ .OOH-. )* OOH%
	& 	
	
. .* *
	& 
	&s;   $C*
"C,C>CC*CCC'	#C**C3c                    | j                  dddd      }|j                         5  |j                  d       |j                  d      5  |j                  d       |j                         5  |j                  d       d d d        |j                  d       d d d        |j                  d	       d d d        | j	                  ddddd	       y # 1 sw Y   QxY w# 1 sw Y   DxY w# 1 sw Y   7xY w)
NTFrh   rQ   r+   rR   rS   rT   rU   ri   rF   s     r    2test_autocommit_block_nontransactional_ddl_sqlmodezKMigrationTransactionTest.test_autocommit_block_nontransactional_ddl_sqlmodeG  s    ---1%*
 &&( 
	&OOH%**$*? *)--/ .OOH-. )* OOH%
	& 	h(H	
. .* *
	& 
	&s;   $C&
"C,C>CC&CCC#	C&&C/c                    | j                   j                  j                         }t        j                         x| j                   j
                  _        }|D ]{  }|dk(  r%| j                   j
                  j                          -|dk(  r%| j                   j
                  j                          W| j                   j
                  j                  |       } t        ||j                                y )NrV   rW   )
r   r   getvaluer   r   r   
emit_beginemit_commit_execr   )r   stepsto_checkbufsteps        r    rZ   z+MigrationTransactionTest._assert_impl_steps`  s    <<--66802='# 	.Dw!!,,.!!!--/!!''-	. 	Hclln%r"   )__name__
__module____qualname____backend__r   r!   r%   r2   r6   r8   r>   r@   rC   rG   rJ   rL   rO   r[   r]   r   requirementsautocommit_isolationrd   rf   rj   rl   rZ    r"   r    r   r      s    KD 	----------6: --%- .%-N --- .-:
B
2&r"   r   )r   	migrationr   testingr   r   r   r   r	   r
   r   r   testing.fixturesr   r   r|   r"   r    <module>r      s4    	 ) $        (]&x ]&r"   