;c,DddlZddlZddlZddlmZddlmZddlmZddlm Z m Z m Z ddl Z ddl Z ddlmZedZ dd lmZGd d e j,Zy#e$reZYwxYw) N)Path)OperationalError)Thread)SkipTestskipIf skipUnless setup_loggertest.db)_unicode_text_factoryceZdZedZdZdZdZdZdZ dZ dZ d Z d Z d Zd Zd ZdZdZdZdZeej.dkddZeej.dkddZdZdZdZdZdZeej.dkddZ eej.dkddZ!eej.dkd d!Z"y")# SmokeTestctyNr )clss 7/usr/lib/python3/dist-packages/aiosqlite/tests/smoke.py setUpClasszSmokeTest.setUpClassscVtjrtjyyrTEST_DBexistsunlinkselfs rsetUpzSmokeTest.setUp >>  NN  rcVtjrtjyyrrrs rtearDownzSmokeTest.tearDown"rrcKtjtd{}|j|tj|j d4d{}|j d{}|j|dgdddd{|jd{y77Z7D7##1d{7swY3xYw7"wN select 1, 2)r ) aiosqliteconnectrassertIsInstance Connectionexecutefetchall assertEqualcloserdbcursorrowss rtest_connection_awaitzSmokeTest.test_connection_await&s$$W- - b)"6"67::m, - -**D   TF8 , - -hhj. -* - - - - suCB29CB4CB:1B62B: CB8C,C-C4C6B:8C:C C C CcKtjt4d{}|j|tj|j d4d{}|j d{}|j|dgdddd{dddd{y77R7<7#1d{7swY+xYw7"#1d{7swYyxYwwr")r%r&rr'r(r)r*r+r-s rtest_connection_contextz!SmokeTest.test_connection_context0s$$W- 1 1  ! !"i&:&: ;zz-0 1 1F#__..  x0 1 1 1 1 1 1. 1 1 1 1 1 1 1 1sCB+C6C B-C B32B/3B3 C B1C  C%C&C-C /B31C 3C 9B<:C C C CC CCcKGdd}ddtd|f}tjt4d{}|j dd{|j dd{|j d{|j dd{}|j d{}dddd{|D]q}tj|4d{}|j dd{}|j|j d{dddd{sy7777777#1d{7swYxYw7|7e7D71#1d{7swYxYww)NceZdZdZy)1SmokeTest.test_connection_locations..Fakec ttSr)strrrs r__str__z9SmokeTest.test_connection_locations..Fake.__str__:s 7|#rN)__name__ __module__ __qualname__r9rrFaker69s $rr>r stest.dbz'create table foo (i integer, k integer)z$insert into foo (i, k) values (1, 5)select * from foo)rr%r&rr)commitr*r+)rr>locsr.r/r0locs rtest_connection_locationsz#SmokeTest.test_connection_locations8se $ $:tI?$$W- + +**FG G G**CD D D))+  ::&9::F**D  + + @C ((- @ @!zz*=>>  v'8!8$? @ @ @ @ + G D :*  + + + + @>!8 @ @ @ @s F E "F,E)-F0E1E+"E1(E- ) E12 F=E/>FE E EEEFE&E E&"F+E1-E1/F1F 7E:8F ?FczKtjt4d{}|jdd{dddd{d}t j t dDcgc] }|| c}d{tjt4d{}|jdd{}|jd{}dddd{tdk(sJy777#1d{7swYxYwcc}w77x7a7K7=#1d{7swYMxYww)NzHcreate table multiple_connections (i integer primary key asc, k integer)cKtjt4d{}|jd|gd{|j d{dddd{y7H7/77 #1d{7swYyxYww)Nz/insert into multiple_connections (k) values (?))r%r&rr)r@)ir.s r do_one_connz8SmokeTest.test_multiple_connections..do_one_connSsu ((1 " "Rjj!RUVTWXXXiik!! " " "X! " " " "sfBA)BA1A+A1A-A1 B#A/$B+A1-A1/B1B7A: 8B?B z"select * from multiple_connections) r%r&rr)asynciogatherranger*len)rr.rGrFr/r0s rtest_multiple_connectionsz#SmokeTest.test_multiple_connectionsLs$$W-  **9      " nnuRyA!{1~ABBB$$W- + +::&JKKF**D + +4yB#      BB +K* + + + +sD;C<D;DC>D D; D #D;-D<D;D!D;%D&D;)D&>D ?D&D"D& D;&D$'D;>DD;DD D D;D; D&"D&$D;&D8,D/ -D84D;c Ktjt4d{}|jdd{t j t dDcgc]}|jd|gc}d{|jd{dddd{tjt4d{}|jdd{}|jd{}dddd{tdk(sJy77cc}w777#1d{7swYxYw7z7c7M7?#1d{7swYOxYww)NzDcreate table multiple_queries (i integer primary key asc, k integer)rHz+insert into multiple_queries (k) values (?)zselect * from multiple_queries) r%r&rr)rIrJrKr@r*rL)rr.rFr/r0s rtest_multiple_querieszSmokeTest.test_multiple_queries`sF$$W-  **9   ..#2YJJLqcR  ))+    $$W- + +::&FGGF**D + +4yB'          +G* + + + +sEDED+D D+D 4D+;D%<D+D'D+ E#D)$!EEE EEE6E7E; EEED+ D+'D+)E+D=1D4 2D=9EEEEEE EEcKtjt4d{}|jd{}|j dd{|j dt dDcgc]}|gc}d{|jd{dddd{tjt4d{}|j dd{}g}|23d{}|j|777cc}w77{7m#1d{7swY}xYw7b7K7@6dddd{7n#1d{7swYnxYwtdk(sJyw)NzCcreate table iterable_cursor (i integer primary key asc, k integer)z*insert into iterable_cursor (k) values (?)rHzselect * from iterable_cursor r%r&rr/r) executemanyrKr@appendrLrr.r/rFr0rows rtest_iterable_cursorzSmokeTest.test_iterable_cursorvsV$$W-  99;&F..X  $$Vqs>V  ))+    $$W- ! !::&EFFFD# ! !c C  & ?W       !F !V ! ! ! ! ! 4yBsE/D E/DD DDD/ D 9 DDDDD E/+D,!E/ D0E/E &D2'E /D63D44D67E  E/ DDDDE/D-!D$ "D-)E/2E 4D66E 7 E/EE/ EE EE/c Kifd}tjd4d{}|jdd{|jddd{|jd{t dDcgc]}t |||f}}|D]}|j |D]}|jdddd{jtdjD]}jt|dy7777cc}w7]#1d{7swYmxYww) Ncfd}j|5tj}|j|}|j ||<dddy#1swYyxYw)NcKjd4d{}|jd{}jt|d|cdddd{S7J747 #1d{7swYyxYww)Nr?r$)r)r*r+rL)r/r0connrs rqueryz>SmokeTest.test_multi_loop_usage..runner..queryso<<(;<  !'!22D$$SY2   2    sTA?A$A?A*A& A* A?A(A?&A*(A?*A<0A3 1A<8A?)subTestrInew_event_looprun_until_completer,)krZr[loopr0resultsrs ` rrunnerz/SmokeTest.test_multi_loop_usage..runners\ a "--/..uw7 !  " " "s AA##A,:memory:z'create table foo (id int, name varchar)z%insert into foo values (?, ?), (?, ?))r Sallyr$Janet)targetargsr$) r%r&r)r@rKrstartjoinr+rLvalues)rrbr.r_threadsthreadr0ras` @rtest_multi_loop_usagezSmokeTest.test_multi_loop_usages6 "$$Z0  B**FG G G**79Q  ))+  DI!HMqvV1b':MGM!   !      Wq)NN$ +D   SY * +  G  M    s"E D%E D4D'D4D)D41D+2D4D-0D4 E D2AE 'D4)D4+D4-D42E 4E:D= ;EE c Ktjt4d{}|j4d{}|j dd{|j dt dDcgc]}|gc}d{|jd{dddd{dddd{tjt4d{}|j d4d{}g}|23d{}|j|777cc}w777~#1d{7swYxYw7#1d{7swYxYw7z7b7W6dddd{7n#1d{7swYnxYwdddd{7n#1d{7swYnxYwtdk(sJyw)NzBcreate table context_cursor (i integer primary key asc, k integer)z)insert into context_cursor (k) values (?)rHzselect * from context_cursorrQrTs rtest_context_cursorzSmokeTest.test_context_cursors$$W- " "yy{ " "fnn=((?"'),QaS,iik!! " " " "$$W- % %zz"@A % %V!'%%#KK$! " " -" " " " " " " " " % %% % % % % % % % % % % 4yBssF?DF?EDED-D D-0 D": D-D'D-D)D-! E,D+-E1 F?<E=!F?EF?"F8E9F<E2EE E E2F?E D-"D-)D-+E-D? 3D64D? ;EF?E E EF?FEE2 F+E.,F2F 8E;9F F F?FF?F+F" F+'F?cKtjt4d{}|jd{}|j dd{}|j ||d|j dddgd{}|j |||jdd{}|j ||dddd{y7777X7/7#1d{7swYyxYww)Nz;create table test_cursor_return_self (i integer, k integer)zcursor execute returns itselfz1insert into test_cursor_return_self values (?, ?))r r )r$r$zinsert into test_cursor_return_self values (3, 3);insert into test_cursor_return_self values (4, 4);insert into test_cursor_return_self values (5, 5);)r%r&rr/r)r+rR executescript)rr.r/results rtest_cursor_return_selfz!SmokeTest.test_cursor_return_selfs$$W- - -99;&F!>>MF   VV-L M!--CffEUF   VV ,!//EF   VV ,% - - -&   - - - -sC4CC4CCCC.CC*C+C,C C4 CC4CCCCC4C1%C( &C1-C4cKtjt4d{}|j|jd|j 4d{}|j |j|jdd{|jdd{|j|j|jd{|j |jdddd{|j|jd|j|j|j|jt|j 4d{}|jdd{|jd{}|j!|t"|j|d|j%t&5|d}ddddddd{tj(|_ t*|_ |j|jtj(|j|jt*|j 4d{}|jdd{|jd{}|j!|tj(|j|dd|j|dd |j|dd|j|d d dddd{dddd{y7*77777Y#1d{7swYjxYw777#1swYxYw7#1d{7swYxYw7"7 77t#1d{7swYxYw7{#1d{7swYyxYww) NrzKcreate table test_properties (i integer primary key asc, k integer, d text)z3insert into test_properties (k, d) values (1, 'hi')r zselect * from test_properties)r r hir_r$shid)r%r&rr+ total_changesr/ assertFalsein_transactionr) assertTruer@ assertIsNone row_factory text_factorydefault_text_factoryfetchoner'tuple assertRaises TypeErrorRowbytes)rr.r/rU_s rtest_connection_propertiesz$SmokeTest.test_connection_propertiess%$$W-) 2) 2   R--q 1yy{ 4 4f  !2!23nnEnnI 1 12iik!!  !2!23 4 4   R--q 1   bnn -   R__.B Cyy{ ! !fnn%DEEE"OO--%%c51  l3&&y1!CA!  ! !']]BN#BO   R^^Y]] ;   R__e 4yy{ 2 2fnn%DEEE"OO--%%c9==9  Q+  Q/  S1-  S51 2 2E) 2) 2) 2 4" 4 4 4 4$ !E-!!  ! ! ! ! 2E- 2 2 2 2E) 2) 2) 2) 2sOM O1OM O0M M M"M#2MMM5 OMA/O0M21O4N  M5 N !M8"AN #M;)N 1 O<N=BO?N!ON+N$N+0N'1A8N+) O4N)5O9 OOO OMMMOM/ "M%#M/ * O5N 8N ;N N O N NN  O$N+'N+)O+N= 1N42N= 9OOOO OOcjKtjt4d{}|jdd{|jdd{|j d{dddd{tjt4d{}|jdd{}|j d{}|j |gddddd{y77777#1d{7swYxYw7y7b7L7*#1d{7swYyxYww)NzBcreate table test_fetch_all (i integer primary key asc, k integer)zz5SmokeTest.test_set_progress_handler.. srr zIcreate table test_progress_handler (i integer primary key asc, k integer))r%r&rset_progress_handlerrrr))rr.s rtest_set_progress_handlerz#SmokeTest.test_set_progress_handlers$$W-  )))Q7 7 7""#34 jj_     7      s~B1BB1BB BB*B +B/B7 B1BB1 B BB BB1B."B% #B.*B1cKd}d}tjt4d{}|jdd|d{|jdd|d{|j d4d{}|j d{}|j |dd dddd{|j d 4d{}|j d{}|j |dd dddd{dddd{y777777v#1d{7swYxYw7s7]7:#1d{7swYJxYw7A#1d{7swYyxYww) z.no_arg)src |dzSNr$r=nums rone_argz/SmokeTest.test_create_function..one_arg, 7NrNrrrr zSELECT no_arg();rzSELECT one_arg(10);)r%r&rcreate_functionr)rr+)rrrr.resrUs rtest_create_functionzSmokeTest.test_create_function&sU  $$W- - -$$Xq&9 9 9$$Y7; ; ;zz"45 3 3LLN*  Q2 3 3zz"78 - -CLLN*  Q, - - - - - 9 ; 3* 3 3 3 3 -* - - - - - - - -s$E3D E3ED"ED$E6D&7E:D,D(D,( E3D*4E EEE%E&E? E E E E3EE3"E$E&E(D,*E,D> 2D53D> :EEEE EE EE3E0$E' %E0,E3)zPython < 3.8 specific behaviourcKd}tjt4d{}|jtd5|j dd|dd{ddd|j dd{|jtd 5|j d d{ddddddd{y77p#1swYoxYw7]7/#1swY.xYw7%#1d{7swYyxYww) zKMake sure the deterministic parameter cannot be used in old Python versionsc |dzSrr=rs rrzCSmokeTest.test_create_function_deterministic_pre38..one_arg?rrNzregistered as non-deterministicrr T deterministic"create table foo (id int, bar int)z;non-deterministic functions prohibited in index expressions#create index t on foo(one_arg(bar))) r%r&rassertWarnsRegex UserWarningrr)assertRaisesRegexrrrr.s r(test_create_function_deterministic_pre38z2SmokeTest.test_create_function_deterministic_pre38;s $$W- H H&&{4UV T((Awd(SSS T**AB B B'' M Hjj!FGGG  H H H HS T T CH  H H H H H Hs!C=CC=C(C CC C(8C9C(C(C)C-C(5 C=C&C=C  C C(CC# C(&C=(C:.C1 /C:6C=zPython 3.8+ specific behaviourcRKd}tjt4d{}|jdd|dd{|j dd{|j dd{dddd{y7d7I7277 #1d{7swYyxYww) zAssert that after creating a deterministic custom function, it can be used. https://sqlite.org/deterministic.html c |dzSrr=rs rrzDSmokeTest.test_create_function_deterministic_post38..one_argWrrNrr Trrr)r%r&rrr)rs r)test_create_function_deterministic_post38z3SmokeTest.test_create_function_deterministic_post38Ps $$W- D D$$Y7$$O O O**AB B B**BC C C  D D D O B D  D D D Dsz!B'BB'BB BB B2B3B7 B'BB' B BBB'B$B B$ B'cPKgdtffd }tjt4d{}|j |d{|j dd{|j ddddd{y7Y7B7+7 #1d{7swYyxYww)N statementc(j|yr)rS)r statementss rcallbackz3SmokeTest.test_set_trace_callback..callbackds   i (rz select 10)r8r%r&rset_trace_callbackr)assertIn)rrr.rs @rtest_set_trace_callbackz!SmokeTest.test_set_trace_callbackas  ) )$$W- 3 3''1 1 1**[) ) ) MM+z 2  3 3 3 1 ) 3 3 3 3sh,B&B B&BB  B!B "B8 B&BB& B BB&B#B B#B&cKtd}|jtd5tj|4d{}|j |dddd{ddd|jtd5tj|d{}|j |dddy7{7\#1d{7swYlxYw#1swYpxYw7C#1swYyxYww)Nz!/something/that/shouldnt/exist.dbzunable to open database)rrrr%r&r|)rbad_dbr.s rtest_connect_errorzSmokeTest.test_connect_errorms9:  # #$46O P & ((0 & &B!!"% & & & # #$46O P " ((00B   b ! " " & & & & & & & 1 " "s"C-CB:CB> CB< C$C-C!CC!1 C-:C<C>C CC CCC-C!!C*&C-cKtjd4d{}|jdd{|jdddgd{|j 2cgc3d{}| 7Y7B7(7 6ncc}w}}|j |gddddd{7y#1d{7swYyxYww)Nrc,create table foo (i integer, k charvar(250))insert into foo values (?, ?)r hellor$world)zBEGIN TRANSACTION;z-CREATE TABLE foo (i integer, k charvar(250));z$INSERT INTO "foo" VALUES(1,'hello');z$INSERT INTO "foo" VALUES(2,'world');zCOMMIT;)r%r&r)rRiterdumpr+)rr.lineliness r test_iterdumpzSmokeTest.test_iterdumpws$$Z0  B**KL L L../, 1M  -/KKM::DT   L ;::E:         sCA6CB-A8B-A:B-(B*A>.A< /A>2B6C8B-:B-<A>>B?B- C&B)'C-B?3B6 4B?;CcKtjtd{}|jdd{}|j d{|j t d5|jd{ddd|j t d5|jd{dddy777w7J#1swYIxYw7!#1swYyxYww)Nr#zConnection closed)r%r&rr)r,r ValueErrorr*)rr.r/s r test_cursor_on_closed_connectionz*SmokeTest.test_cursor_on_closed_connections$$W- -zz-00hhj  # #J0C D $//# # # $  # #J0C D $//# # # $ $ .0 # $ $ $ $ $sC&CC&CC&CC&+C ?C C C&"C6C7C; C&C&C& C  CC&CC#C&cKtjtd{}|jdd{}g}t dD]k}|dk(r2|j t j|j|j t j|jm|D] } |d{y777 #tj$rY,wxYww)Nr#d2) r%r&rr)rKrSrI ensure_futurer,r*sqlite3ProgrammingError)rr.r/tasksrFtasks r%test_cursor_on_closed_connection_loopz/SmokeTest.test_cursor_on_closed_connection_loops$$W- -zz-00s CABw W22288:>? LL..v/@A B C D   .0++  sVC*C C*C BC*>CCCC* C*CC'$C*&C''C*)rzTest backup() on 3.7+c Kd}tjd4d{}tjd4d{}|jdd{|jdddgd{|j d{|j t d5|jdd{ddd|j|| d{|jd4d{}|jd{}|j|ddgdddd{dddd{dddd{y7:77 777#1swYxYw77~7h7F#1d{7swYVxYw7M#1d{7swY]xYw7T#1d{7swYyxYww) Nct|||yr)print)abcs rprogressz1SmokeTest.test_backup_aiosqlite..progresss !QNrrcrrrrno such table: foor?)r) r%r&r)rRr@rrbackupr*r+)rrdb1db2r/r0s rtest_backup_aiosqlitezSmokeTest.test_backup_aiosqlites $$Z0 E EC9J9J :  E E ++LM M M///, 1M  **,  ''(8:NO 7kk"5666 7**S8*4 4 4{{#67 E E6#__..   l'CD E E E E E E E E N  7 7 7 5 E. E E E E E E E E E E E EsPF?EF?F*EF*FEF2E"3F E$ F%E(:E& ;E(?FE4F7E6 8F;E<E8 E<( F3E:4F8 F*FF* F?F(F?F*F"F$F&E((E1 -F6F8E<:F<F FF FF*F% FF% !F*(F?*F<0F3 1F<8F?cKtjd4d{}tjd5}|jdd{|j dddgd{|j d{|j td5|jdddd|j|d{|jd}|j}|j|ddgddddddd{y7777#1swYxxYw7f#1swY0xYw7'#1d{7swYyxYww)Nrcrrrrrr?) r%r&rr)rRr@rrrr*r+)rrrr/r0s rtest_backup_sqlitezSmokeTest.test_backup_sqlitesF$$Z0 E EC, Ekk"PQQQoo3lL5Qjjl""++,<>RS5KK 345jjo%%%89(   l'CD E E E EQ#55& E E E E E EsEDED?D1 D D1'D(D1?D!D1D#,D1D/ 9D1D? ED=ED1D1!D1#D, (D11D: 6D?=E?EE E Ez!Test short circuit fail on Py 3.6cKtjd4d{}tjd4d{}|jtd5|j |d{ddddddd{dddd{y7{7_71#1swY0xYw7'#1d{7swY7xYw7.#1d{7swYyxYww)Nrcz backup().+3.7)r%r&r RuntimeErrorr)rrrs rtest_backup_py36zSmokeTest.test_backup_py36s$$Z0 & &C9J9J :  & & '' oF &jjo%% & & & & & & && & & & & & & & & & &sCBCCBCB,B*B +B/B,7 CB*C CCCCBB' #B,*C,B> 2B53B> :CCC C CCN)#r:r;r< classmethodrrr r1r3rCrMrOrVrnrprtrrrrrrsys version_inforrrrrrrrrrrr=rrrrsP1@((,&+B*-**2X : -*  6)+LMHNH( C  v %'GHDID 3"&$  C  v %'>?E@E, C  v %'>?E@E$  6)+NO&P&rr)rIrrpathlibrr threadingrunittestrrr aiounittestr%helpersr r_sqlite3r r ImportErrorr8 AsyncTestCaserr=rrrsd $11! y/F z& ))z& sAA&%A&