U a+@stddlmZddlmZddlmZddlmZddlmZddlmZddlmZdd lmZdd lm Z dd l m Z dd l m Z dd l mZddlmZddlmZddlmZddlmZddlmZddlmZddlmZddlmZGdddejZGdddejZGdddejZGdddejZGdd d ejZGd!d"d"ejeZ Gd#d$d$ejZ!d%S)&)testing) assert_raises)config)engines)eq_)fixtures)ne_)provide_metadata) requirements) set_default_schema_on_connection)Column)Table) bindparam)event)exc)Integer)literal_column)select)String)compatc@s:eZdZdZdZdZeddZej ddZ dd Z d S) ExceptionTestzTest basic exception wrapping. DBAPIs vary a lot in exception behavior so to actually anticipate specific exceptions from real round trips, we need to be conservative. eachTc Cs(td|tdtdddtdtddS)N manual_pkidTF primary_keyZ autoincrementdata2rr rrclsmetadatar$fC:\Users\vtejo\AppData\Local\Temp\pip-unpacked-wheel-nyjtotrf\sqlalchemy\testing\suite\test_dialect.py define_tables%s  zExceptionTest.define_tablesc CsdtjP}|}||jjdddtt j |j|jjddd| W5QRXdS)Nrd1rr) rdbconnectbeginexecutetablesrinsertrrZIntegrityErrorrollback)selfconntransr$r$r%test_integrity_error.s   z"ExceptionTest.test_integrity_errorc Cstj}z|ttdds(tWnBtjk rl}z"t |}t |j t |ks\tW5d}~XYnXt j rt |t stnt |t stW5QRXdS)NuméilF)rr)r*r,rrAssertionErrorrZ DBAPIErrorstrorigrZpy2k isinstance)r0r1errerr_strr$r$r%test_exception_with_non_asciiAs  (z+ExceptionTest.test_exception_with_non_asciiN) __name__ __module__ __qualname____doc__ run_deletes __backend__ classmethodr&r Z$duplicate_key_raises_integrity_errorr3r:r$r$r$r%rs  rc@s4eZdZdZdZddZddZddZd d Zd S) IsolationLevelTestTZisolation_levelcCsFtt}|d}|d}t|d|g}|r8|StddS)Ndefault supported AUTOCOMMITz(no non-default isolation level available)r get_isolation_levelsrset differencepopZ skip_test)r0levelsrDrEsr$r$r% _get_non_default_isolation_level]s z3IsolationLevelTest._get_non_default_isolation_levelcCsttjjjttddS)NrD)rrr)dialectZdefault_isolation_levelr rG)r0r$r$r%test_default_isolation_levelis z/IsolationLevelTest.test_default_isolation_levelc Csj|}tjN}|}t|||j|dt|||j |j t||W5QRXdS)NrC) rMrr)r*get_isolation_levelr execution_optionsrrNreset_isolation_level connection)r0Z non_defaultr1existingr$r$r% test_non_default_isolation_levelos   z3IsolationLevelTest.test_non_default_isolation_levelc Cstt}|d}t|dgD]z}tj>}|j|dt| || }| t| |W5QRXtj}t| |dW5QRXq"dS)NrErFrCrD) r rGrrHrIr)r*rQrrPr+r/)r0rKZ all_levelslevelr1r2r$r$r%test_all_levelss    z"IsolationLevelTest.test_all_levelsN) r;r<r=r@ __requires__rMrOrUrWr$r$r$r%rBXs  rBc@sDeZdZdZdZdZeddZddZdd Z d d Z d d Z dS)AutocommitIsolationTestr) autocommitTc Cs,td|tdtdddtdtddddS) N some_tablerTFrrr)Ztest_needs_acidr r!r$r$r%r&s z%AutocommitIsolationTest.define_tablesc Csx|}||jjddd|t|t|jjj j |rHdnd|||jj W5QRXdS)Nrz some datar() r+r,r-r[r.r/rscalarrcrdelete)r0r1rZr2r$r$r%_test_conn_autocommitss   z.AutocommitIsolationTest._test_conn_autocommitscCs:|}|jdd}||d|j|j||ddS)NrFrCTF)rQr_rNrRrS)r0connection_no_transr1c2r$r$r%test_autocommit_ons   z*AutocommitIsolationTest.test_autocommit_oncCs|}||ddS)NF)r_r0r`r1r$r$r%test_autocommit_offsz+AutocommitIsolationTest.test_autocommit_offcCsB|}|jdd}||d|jttdd||ddS)NrFrCTrDF)rQr_r rGrrcr$r$r%.test_turn_autocommit_off_via_default_iso_levels  zFAutocommitIsolationTest.test_turn_autocommit_off_via_default_iso_levelN) r;r<r=r?rXr@rAr&r_rbrdrer$r$r$r%rYs  rYc@seZdZeddZdS) EscapingTestc Cs|j}td|tdtd}|tjtj}|| t dd|| t ddt | t |jj|jjtdkdt | t |jj|jjtdkdW5QRXd S) z|test that the DBAPI accommodates for escaped / nonescaped percent signs in a way that matches the compiler trrz some % value)rzsome %% other valuez'some % value'z'some %% other value'N)r#rr rcreaterr)r+r,r.dictrr\rr]rwherer)r0mrgr1r$r$r%test_percent_sign_round_trips,     z)EscapingTest.test_percent_sign_round_tripN)r;r<r=r rlr$r$r$r%rfsrfc@s4eZdZdZdZddZddZddZd d Zd S) WeCanSetDefaultSchemaWEventsTestT)Zdefault_schema_name_switchc Cs8tjjj}t}|W5QRXt|jj|dSN)rr)rNdefault_schema_namertesting_enginer*r)r0roengr$r$r%test_control_cases    z2WeCanSetDefaultSchemaWEventsTest.test_control_casec Csdtjjj}t}t|ddd}|}|j |}t |tj W5QRXt |jj|dS)Nr*cSstt|tjdSrnr r test_schemadbapi_connectionZconnection_recordr$r$r% on_connects zMWeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insert..on_connect) rr)rNrorrpr listens_forr*_get_default_schema_namerrt)r0rorqrwr1what_it_should_ber$r$r%test_wont_work_wo_inserts     z9WeCanSetDefaultSchemaWEventsTest.test_wont_work_wo_insertc Cs`t}tj|ddddd}|}|j|}t|tj W5QRXt|jj tj dS)Nr*Tr.cSstt|tjdSrnrsrur$r$r%rws zRWeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connect..on_connect) rrprrxr*rNryrrrtro)r0rqrwr1rzr$r$r%test_schema_change_on_connects   z>WeCanSetDefaultSchemaWEventsTest.test_schema_change_on_connectc Cst}tj|ddddd}|F}|}|j|}t|t j | |j|}t|t j W5QRXt|jj t j dS)Nr*Tr|cWstt|tjdSrnrs)rvargr$r$r%rw%s z\WeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactions..on_connect) rrprrxr*r+rNryrrrtr/ro)r0rqrwr1r2rzr$r$r%'test_schema_change_works_w_transactions"s     zHWeCanSetDefaultSchemaWEventsTest.test_schema_change_works_w_transactionsN) r;r<r=r@rXrrr{r}rr$r$r$r%rms  rmc@s eZdZdS)&FutureWeCanSetDefaultSchemaWEventsTestN)r;r<r=r$r$r$r%r7src@s>eZdZdZejdddddddd d d d d dddddZdS)DifficultParametersTestT)Zboring)zper cent)z per % cent)z%percent)zpar(ens))zpercent%(ens)yah)zcol:ons)zmore :: %colons%)z /slashes/)z more/slashes)zq?marks)Z1param)z1col:onname)argnamesc Cstd|tdtddt|tddd}||||dd|d it|j | |j |d k}t | |d t|j | |j |t |k}|||d i}t |j|d dS) NrgrT)rrF)Znullablerz some name)rr rrrhr,r.valuesrr]rjrr\rfirst_mapping)r0rrSr#rgZstmtrowr$r$r%test_round_trip@s  "z'DifficultParametersTest.test_round_tripN)r;r<r=r@r combinationsrr$r$r$r%r=s$rN)"rrrrrrr r r Z provisionr Zschemar rrrrrrrrutilrZ TablesTestrZTestBaserBrYrfrmZFutureEngineMixinrrr$r$r$r%s:                    ?>=!C