o ­=?h7ã@s˜ddlZddlZddlZddlmZddlmZmZedZ Gdd„dej ƒZ Gdd„dej ƒZ Gd d „d ej ƒZ d d „Zd d„ZedkrJeƒdSdS)éN)ÚLOOPBACK_TIMEOUT)ÚTESTFNÚunlinké c@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)ÚTransactionTestscCs<tjttd|_|j ¡|_tjttd|_|j ¡|_dS)N)Ztimeout) ÚsqliteÚconnectrÚTIMEOUTÚcon1ÚcursorÚcur1Úcon2Úcur2©Úself©rú@/opt/alt/python310/lib64/python3.10/sqlite3/test/transactions.pyÚsetUp"s zTransactionTests.setUpcCsBz|j ¡|j ¡|j ¡|j ¡WttƒdSttƒw©N)r Úcloser rr rrrrrrÚtearDown)s     zTransactionTests.tearDowncCsN|j d¡|j d¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)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ÚresrrrÚ$test_dml_does_not_auto_commit_before4s     z5TransactionTests.test_dml_does_not_auto_commit_beforecCsB|j d¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)NrrrrrrrrrÚtest_insert_starts_transaction<s    z/TransactionTests.test_insert_starts_transactioncCsX|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡d}| |d¡dS)Nrrzupdate test set i=6rré)r rr ÚcommitrZfetchonerrrrrÚtest_update_starts_transactionCs     z/TransactionTests.test_update_starts_transactioncCsX|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nrrzdelete from testré©r rr r$rrrrrrrrÚtest_delete_starts_transactionLs      z/TransactionTests.test_delete_starts_transactioncCsl|j d¡|j d¡|j ¡|j d¡|j d¡|j ¡}| t|ƒd¡| |ddd¡dS)Nrrzreplace into test(i) values (6)rr&rr#r'rrrrÚtest_replace_starts_transactionUs      z0TransactionTests.test_replace_starts_transactioncCs¤|j d¡|j d¡d|j_| |jjd¡|j d¡|j ¡}| t|ƒd¡d|j_| |jjd¡|j d¡|j d¡|j ¡}| t|ƒd¡dS)Nrrrr&ZDEFERRED)r rr Zisolation_levelrrrrrrrrÚtest_toggle_auto_commit_s       z(TransactionTests.test_toggle_auto_commitcCsV|j d¡|j d¡| tj¡|j d¡WdƒdS1s$wYdS)Nrr)r rÚ assertRaisesrÚOperationalErrorrrrrrÚtest_raise_timeoutos  "ÿz#TransactionTests.test_raise_timeoutcCs^|j d¡|j d¡| tj¡|j d¡Wdƒn1s#wY|j ¡dS)z This tests the improved concurrency with pysqlite 2.3.4. You needed to roll back con2 before you could commit con1. rrN)r rr+rr,rr r$rrrrÚ test_lockingus  ÿzTransactionTests.test_lockingcCsrt d¡}| ¡}| d¡| d¡| d¡| ¡| tj¡ | ¡WdƒdS1s2wYdS)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)rrr rÚrollbackr+ZInterfaceErrorr)rÚconÚcurrrrÚ test_rollback_cursor_consistencys     "ÿz1TransactionTests.test_rollback_cursor_consistencyN)Ú__name__Ú __module__Ú __qualname__rrr!r"r%r(r)r*r-r.r3rrrrr!s     rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚSpecialCommandTestscCst d¡|_|j ¡|_dS©Nr/)rrr1r r2rrrrr‘s zSpecialCommandTests.setUpcCó(|j d¡|j d¡|j d¡dS)Nrrzdrop table test©r2rrrrrÚtest_drop_table•ó  z#SpecialCommandTests.test_drop_tablecCr9)Nrrzpragma count_changes=1r:rrrrÚ test_pragmašr<zSpecialCommandTests.test_pragmacCs|j ¡|j ¡dSr)r2rr1rrrrrŸs zSpecialCommandTests.tearDownN)r4r5r6rr;r=rrrrrr7s  r7c@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) ÚTransactionalDDLcCst d¡|_dSr8)rrr1rrrrr¤szTransactionalDDL.setUpcCs6|j d¡|j ¡|j d¡ ¡}| |g¡dS)Nrúselect * from test)r1rr0rr)rÚresultrrrÚ'test_ddl_does_not_autostart_transaction§s  z8TransactionalDDL.test_ddl_does_not_autostart_transactioncCó`|j d¡|j d¡|j ¡| tj¡|j d¡WdƒdS1s)wYdS)Nzbegin immediaterr?©r1rr0r+rr,rrrrÚ test_immediate_transactional_ddl¯ó   "ÿz1TransactionalDDL.test_immediate_transactional_ddlcCrB)NZbeginrr?rCrrrrÚtest_transactional_ddl¸rEz'TransactionalDDL.test_transactional_ddlcCs|j ¡dSr)r1rrrrrrÁszTransactionalDDL.tearDownN)r4r5r6rrArDrFrrrrrr>£s  r>cCstttg}t dd„|Dƒ¡S)NcSsg|] }t ¡ |¡‘qSr)ÚunittestZ TestLoaderZloadTestsFromTestCase)Ú.0ÚtrrrÚ Ëszsuite..)r7rr>rGZ TestSuite)ZtestsrrrÚsuiteÄsý ÿrKcCst ¡}| tƒ¡dSr)rGZTextTestRunnerÚrunrK)ZrunnerrrrÚtestÎsrMÚ__main__)ÚosrGZsqlite3rZ test.supportrZtest.support.os_helperrrr ZTestCaserr7r>rKrMr4rrrrÚs o!  ÿ