
    辙h?C                         d dl Z 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
mZ d dlmZ d dlZdd	lmZ  G d
 de
      Zy)    N)Path)OperationalError)TemporaryDirectory)Thread)IsolatedAsyncioTestCaseSkipTest)patch   setup_loggerc                       e Zd Ze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d Zd Zd Zd Zd Zd Zd Zd Zd Zy)	SmokeTestc                     t                y Nr   )clss    Q/var/www/Befach/backend/env/lib/python3.12/site-packages/aiosqlite/tests/smoke.py
setUpClasszSmokeTest.setUpClass   s        c                     t               }| j                  |j                         t        |j                        j                         dz  | _        y )Nztest.db)r   
addCleanupcleanupr   nameresolvedb)selftds     r   setUpzSmokeTest.setUp   s7    !

#rww-'')I5r   c                   K   t        j                  | j                         d {   }| j                  |t         j                         |j                  d      4 d {   }|j                          d {   }| j                  |dg       d d d       d {    |j                          d {    y 7 7 Z7 D7 ## 1 d {  7  sw Y   3xY w7 "wNselect 1, 2)r
      )		aiosqliteconnectr   assertIsInstance
ConnectionexecutefetchallassertEqualcloser   r   cursorrowss       r   test_connection_awaitzSmokeTest.test_connection_await   s     $$TWW--b)"6"67::m, 	- 	-**DTF8,	- 	- hhj .	-*	- 	- 	- 	- 	su   #CB89CB: C#C 7B<8C CB>C2C3C:C<C >C CC	CCc                   K   t        j                  | j                        4 d {   }| j                  |t         j                         |j                  d      4 d {   }|j                          d {   }| j                  |dg       d d d       d {    d d d       d {    y 7 7 R7 <7 # 1 d {  7  sw Y   +xY w7 "# 1 d {  7  sw Y   y xY wwr   )r"   r#   r   r$   r%   r&   r'   r(   r*   s       r   test_connection_contextz!SmokeTest.test_connection_context%   s     $$TWW- 	1 	1!!"i&:&:;zz-0 1 1F#__..  x01 1	1 	1 	11.1 1 1 1	1 	1 	1 	1s   $C%B1C%6C B3!C$B98B59B9CB7C C%+C,C%3C5B97C9C	?C C	CC%C"CC"C%c                 d  K   | j                   j                          G fdd      }t              j                          |       f}t	        j
                  |d         4 d {   }|j                  d       d {    |j                  d       d {    |j                          d {    |j                  d       d {   }|j                          d {   }d d d       d {    |D ]q  }t	        j
                  |      4 d {   }|j                  d       d {   }| j                  |j                          d {          d d d       d {    s y 7 7 7 7 7 7 7 # 1 d {  7  sw Y   xY w7 |7 e7 D7 1# 1 d {  7  sw Y   xY ww)Nc                       e Zd Z fdZy)1SmokeTest.test_connection_locations.<locals>.Fakec                     S r    )r   TEST_DBs    r   __str__z9SmokeTest.test_connection_locations.<locals>.Fake.__str__1   s    r   N)__name__
__module____qualname__r6   )r5   s   r   Faker2   0   s    r   r:   r   z'create table foo (i integer, k integer)z$insert into foo (i, k) values (1, 5)select * from foo)
r   as_posixr   encoder"   r#   r&   commitr'   r(   )r   r:   locsr   r+   r,   locr5   s          @r   test_connection_locationsz#SmokeTest.test_connection_locations-   s|    ''""$	 	 Ww(8$&A$$T!W- 	+ 	+**FGGG**CDDD))+::&9::F**D	+ 	+ C ((- @ @!zz*=>>  v'8!8$?@ @ @ 	+GD:*	+ 	+ 	+ 	+@>!8@ @ @ @s  A%F0(E/)F0,E>E2E>E4E>2E63E>E8E>#E:$E>(F03E<4"F0FF0F/F0"FF	FF0'F(F02E>4E>6E>8E>:E><F0>FFFF0FFF0F-	!F$"F-	)F0c                    K   t        j                   j                        4 d {   }|j                  d       d {    d d d       d {     fd}t	        j
                  t        d      D cg c]
  } ||       c}  d {    t        j                   j                        4 d {   }|j                  d       d {   }|j                          d {   }d d d       d {    t              dk(  sJ y 7 7 7 # 1 d {  7  sw Y   xY wc c}w 7 7 x7 a7 K7 =# 1 d {  7  sw Y   MxY ww)NzHcreate table multiple_connections (i integer primary key asc, k integer)c                   K   t        j                  j                        4 d {   }|j                  d| g       d {    |j	                          d {    d d d       d {    y 7 H7 /7 7 # 1 d {  7  sw Y   y xY ww)Nz/insert into multiple_connections (k) values (?))r"   r#   r   r&   r>   )ir   r   s     r   do_one_connz8SmokeTest.test_multiple_connections.<locals>.do_one_connJ   sz      ((1 " "Rjj!RUVTWXXXiik!!" " "X!" " " "sh   $BA0BA8A2A8A4A8B*A6+B2A84A86B8B
>B?B
B
   z"select * from multiple_connections)	r"   r#   r   r&   asynciogatherranger'   len)r   r   rE   rD   r+   r,   s   `     r   test_multiple_connectionsz#SmokeTest.test_multiple_connectionsC   s    $$TWW- 	 	**9  	 		"
 nnuRyA!{1~ABBB$$TWW- 	+ 	+::&JKKF**D	+ 	+ 4yB#		 	 	 	 BB	+K*	+ 	+ 	+ 	+s   $E
DE
D DDE
D%E
6D&E
D+'E
4D-5E
8D5D/D5%D1&D5*E
5D36E
DE
D#DD#E
-E
/D51D53E
5E;D><EE
c           
        K   t        j                  | j                        4 d {   }|j                  d       d {    t	        j
                  t        d      D cg c]  }|j                  d|g       c}  d {    |j                          d {    d d d       d {    t        j                  | j                        4 d {   }|j                  d       d {   }|j                          d {   }d d d       d {    t              dk(  sJ y 7 7 c c}w 7 7 7 # 1 d {  7  sw Y   xY w7 {7 d7 N7 @# 1 d {  7  sw Y   PxY ww)NzDcreate table multiple_queries (i integer primary key asc, k integer)rF   z+insert into multiple_queries (k) values (?)zselect * from multiple_queries)
r"   r#   r   r&   rG   rH   rI   r>   r'   rJ   )r   r   rD   r+   r,   s        r   test_multiple_querieszSmokeTest.test_multiple_queriesW   sN    $$TWW- 	 	**9  
 .. #2Y JJLqcR   ))+	 	 $$TWW- 	+ 	+::&FGGF**D	+ 	+ 4yB'	 	 	 	 		+G*	+ 	+ 	+ 	+s   $E*D(E*D8D+  D8 D-
:D8D2D8D4D8E*)D6*'E*EE*E*E+EEEE*EE*+D8-D84D86E*8E
>E?E
E*EEE*E'EE'#E*c                   K   t        j                  | j                        4 d {   }|j                          d {   }|j	                  d       d {    |j                  dt        d      D cg c]  }|g c}       d {    |j                          d {    d d d       d {    t        j                  | j                        4 d {   }|j	                  d       d {   }g }|2 3 d {   }|j                  |       7 7 7 c c}w 7 7 7 s# 1 d {  7  sw Y   xY w7 b7 K7 @6 d d d       d {  7   n# 1 d {  7  sw Y   nxY wt              dk(  sJ y w)NzCcreate table iterable_cursor (i integer primary key asc, k integer)z*insert into iterable_cursor (k) values (?)rF   zselect * from iterable_cursor
r"   r#   r   r+   r&   executemanyrI   r>   appendrJ   r   r   r+   rD   r,   rows         r   test_iterable_cursorzSmokeTest.test_iterable_cursorm   s^    $$TWW- 	 	99;&F..X   $$<ERTI>Vqs>V   ))+	 	 $$TWW- 	! 	!::&EFFFD# ! !cC 	& ?W 	 	 	 		!F!V	! 	! 	! 	! 	! 4yBs  $E;DE;D'DD'DD'5
D?
D'	D!
D'!D#"D'&E;1D%2'E;D<E;E2D>3E;E?E  EEE;D'D'D'#D'%E;'D9-D0.D95E;>E EEE;EE;E'EE'#E;c           	         K   i  fd}t        j                  d      4 d {   }|j                  d       d {    |j                  dd       d {    |j                          d {    t	        d      D cg c]  }t        |||f       }}|D ]  }|j                           |D ]  }|j                           d d d       d {     j                  t              d       j                         D ]  } j                  t        |      d        y 7 7 7 7 c c}w 7 ]# 1 d {  7  sw Y   mxY ww)	Nc                     fd}j                  |       5  t        j                         }|j                   |             }|j	                          || <   d d d        y # 1 sw Y   y xY w)Nc                    K   j                  d      4 d {   } | j                          d {   }j                  t        |      d       |cd d d       d {    S 7 J7 47 	# 1 d {  7  sw Y   y xY ww)Nr;   r!   )r&   r'   r(   rJ   )r+   r,   connr   s     r   queryz>SmokeTest.test_multi_loop_usage.<locals>.runner.<locals>.query   so     <<(;<    !'!22D$$SY2     2       sT   A?A$A?A*A& A*A?A(A?&A*(A?*A<0A31A<8A?)subTestrG   new_event_looprun_until_completer)   )krX   rY   loopr,   resultsr   s    `   r   runnerz/SmokeTest.test_multi_loop_usage.<locals>.runner   s\      a "--/..uw7

!
	" " "s   A A##A,:memory:z'create table foo (id int, name varchar)z%insert into foo values (?, ?), (?, ?))r
   Sallyr!   Janet   )targetargsr!   )r"   r#   r&   r>   rI   r   startjoinr(   rJ   values)r   r`   r   r]   threadsthreadr,   r_   s   `      @r   test_multi_loop_usagezSmokeTest.test_multi_loop_usage   s'    	" $$Z0 	 	B**FGGG**79Q   ))+DI!HMqvV1b':MGM! "! "	 	 	Wq)NN$DSY* %	G M	 	 	 	s   "E	D%E	D4D' D4D)D41D+2D4D-0D4	E	D2AE	'D4)D4+D4-D42E	4E:D=;EE	c           	        K   t        j                  | j                        4 d {   }|j                         4 d {   }|j	                  d       d {    |j                  dt        d      D cg c]  }|g c}       d {    |j                          d {    d d d       d {    d d d       d {    t        j                  | j                        4 d {   }|j	                  d      4 d {   }g }|2 3 d {   }|j                  |       7 7 7 c c}w 7 7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   xY w7 {7 c7 X6 d d d       d {  7   n# 1 d {  7  sw Y   nxY wd d d       d {  7   n# 1 d {  7  sw Y   nxY wt              dk(  sJ y w)NzBcreate table context_cursor (i integer primary key asc, k integer)z)insert into context_cursor (k) values (?)rF   zselect * from context_cursorrO   rR   s         r   test_context_cursorzSmokeTest.test_context_cursor   s    $$TWW- 
	" 
	"yy{ 	" 	"fnn=   ((?"'),QaS,   iik!!	" 	"
	" 
	" $$TWW- 	% 	%zz"@A % %V!' % %#KK$!
	"	" - "	" 	" 	" 	"
	" 
	" 
	" 
	"	%%%% % % % %	% 	% 	% 	% 	% 4yBsu  $GD(GED+ ED:D-D:6
D/ 
D:
D4D:"D6#D:'E2D83E7GE'G*E&+G.F&E(F&E?E,E*
E,E?(G+E-D:/D:6D:8E:E	 EE	EGE#EE#G(F&*E,,E?-F&8E;9F&?F	FF	F&GF" G&F8,F/-F84Gc                   K   t        j                  | j                        4 d {   }|j                          d {   }|j	                  d       d {   }| j                  ||d       |j                  dddg       d {   }| j                  ||       |j                  d       d {   }| j                  ||       d d d       d {    y 7 7 7 7 X7 /7 # 1 d {  7  sw Y   y xY ww)Nz;create table test_cursor_return_self (i integer, k integer)zcursor 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#   r   r+   r&   r(   rP   executescript)r   r   r+   results       r   test_cursor_return_selfz!SmokeTest.test_cursor_return_self   s     $$TWW- 	- 	-99;&F!>>M F VV-LM!--CffEU F VV,!//E F
 VV,%	- 	- 	-&

	- 	- 	- 	-s   $C:CC:C%CC%C.C%C*C%1C!2C%C:C#C:C%C%C%!C%#C:%C7+C.,C73C:c                 
  K   t        j                  | j                        4 d {   }| j                  |j                  d       |j                         4 d {   }| j                  |j                         |j                  d       d {    |j                  d       d {    | j                  |j                         |j                          d {    | j                  |j                         d d d       d {    | j                  |j                  d       | j                  |j                         | j                  |j                  t               |j                         4 d {   }|j                  d       d {    |j                          d {   }| j!                  |t"               | j                  |d       | j%                  t&              5  |d   }d d d        d d d       d {    |j                         4 d {   }t         j(                  |_        | j                  |j                  t         j(                         |j                  d       d {    |j                          d {   }| j!                  |t         j(                         | j                  |d   d       | j                  |d   d	       | j                  |d   d       | j                  |d
   d	       d d d       d {    t         j(                  |_        t*        |_        | j                  |j                  t         j(                         | j                  |j                  t*               |j                         4 d {   }|j                  d       d {    |j                          d {   }| j!                  |t         j(                         | j                  |d   d       | j                  |d   d       | j                  |d   d       | j                  |d
   d       d d d       d {    d d d       d {    y 7 77 7 7 7 7 f# 1 d {  7  sw Y   wxY w7 7 7 # 1 sw Y   xY w7 # 1 d {  7  sw Y   xY w7 7 D7 /7 # 1 d {  7  sw Y   xY w7 D7 .7 7 # 1 d {  7  sw Y   xY w7 # 1 d {  7  sw Y   y xY ww)Nr   zKcreate table test_properties (i integer primary key asc, k integer, d text)z3insert into test_properties (k, d) values (1, 'hi')r
   zselect * from test_properties)r
   r
   hir]   r!   rt   ds   hi)r"   r#   r   r(   total_changesr+   assertFalsein_transactionr&   
assertTruer>   assertIsNonerow_factorytext_factorystrfetchoner$   tupleassertRaises	TypeErrorRowbytes)r   r   r+   rS   _s        r   test_connection_propertiesz$SmokeTest.test_connection_properties   s    $$TWW- 4	2 4	2R--q1yy{ 4 4f  !2!23nnE   nnI    1 12iik!!  !2!234 4 R--q1bnn-R__c2yy{ ! !fnn%DEEE"OO--%%c51  l3&&y1 !CA!! ! yy{ 	1 	1f%.]]"  !3!3Y]]Cnn%DEEE"OO--%%c9==9  Q+  Q.  S1-  S40	1 	1 ']]BN#BOR^^Y]];R__e4yy{ 2 2fnn%DEEE"OO--%%c9==9  Q+  Q/  S1-  S512 2[4	2 4	2 4	24 "4 4 4 4$!E-! !! ! ! !	1 F-		1 	1 	1 	1 2E-2 2 2 2[4	2 4	2 4	2 4	2s  $TQT1S8Q S80Q/Q#Q/(Q&)2Q/Q)Q/;S8Q,A/S86R7S8:RRR'R(AR)R/R7S8RS8R4S8AS 3R74S R:A8S S8R=BS8SS8S!+S,S!SA8S!<S8SS8TS6T S8#Q/&Q/)Q/,S8/R	5Q86R	=	S8RRRRS8R1	$R'%R1	,	S87S :S =S8 S	S	S		S8S!S!S8!S3	'S*(S3	/S86T8T
>T?T
Tc                   K   t        j                  | j                        4 d {   }|j                  d       d {    |j                  d       d {    |j	                          d {    d d d       d {    t        j                  | j                        4 d {   }|j                  d       d {   }|j                          d {   }| j                  |g d       d d d       d {    y 7 7 7 7 7 # 1 d {  7  sw Y   xY w7 y7 b7 L7 *# 1 d {  7  sw Y   y xY ww)NzBcreate table test_fetch_all (i integer primary key asc, k integer)z<insert into test_fetch_all (k) values (10), (24), (16), (32)z)select k from test_fetch_all where k < 30))rF   )   )   )r"   r#   r   r&   r>   r'   r(   r*   s       r   test_fetch_allzSmokeTest.test_fetch_all  s%    $$TWW- 	 	**T   **N   ))+	 	 $$TWW- 	: 	:::&QRRF**DT#89	: 	: 	:	 	 	 	 		:R*	: 	: 	: 	:s   $D?DD?DD DDD0D	1D5D? D'D?(D")D?,D*D$D*D&D*2D?=D(>D?DD	DD?DDDD?$D*&D*(D?*D<0D31D<8D?c                   K   t        j                  | j                        4 d{   }	 |j                  d       d{    |j	                  d       d{    ddd      d{    y7 H7 07 # t
        $ r}d|j                  vsJ Y d}~5d}~wt        $ r}t        d      |d}~ww xY w7 I# 1 d{  7  sw Y   yxY ww)z@Assert that after enabling extension loading, they can be loadedNTtestznot authorizedzKpython was not compiled with sqlite3 extension support, so we can't test it)	r"   r#   r   enable_load_extensionload_extensionr   rf   AttributeErrorr   )r   r   es      r   test_enable_load_extensionz$SmokeTest.test_enable_load_extension  s     $$TWW- 
	 
		..t444''///
	 
	 
	4/# 6'qvv555! = 
	 
	 
	 
	s   $C
A/C
B5A5 A1A5A3A5C
)B3*C
1A53A55	B0>BB5B0B++B00B53C
5C;B><CC
c                 r  K   t        j                  | j                        4 d{   }|j                  d d       d{    | j	                  t
              5  |j                  d       d{    ddd       ddd      d{    y7 g7 N7 !# 1 sw Y    xY w7 # 1 d{  7  sw Y   yxY ww)ze
        Assert that after setting a progress handler returning 1, DB operations are aborted
        Nc                       y)Nr
   r4   r4   r   r   <lambda>z5SmokeTest.test_set_progress_handler.<locals>.<lambda>$  s    !r   r
   zIcreate table test_progress_handler (i integer primary key asc, k integer))r"   r#   r   set_progress_handlerr   r   r&   r   r   s     r   test_set_progress_handlerz#SmokeTest.test_set_progress_handler  s      $$TWW- 	 	)))Q777""#34 jj_  	 	 	7 	 	 	 	s   $B7BB7B"BB"B0B1B5B"=B7B 	B7B"BB	B" B7"B4(B+)B40B7c                   K   d }d }t        j                  | j                        4 d{   }|j                  dd|       d{    |j                  dd|       d{    |j	                  d      4 d{   }|j                          d{   }| j                  |d   d	       ddd      d{    |j	                  d
      4 d{   }|j                          d{   }| j                  |d   d       ddd      d{    ddd      d{    y7 7 7 7 7 7 v# 1 d{  7  sw Y   xY w7 s7 ]7 :# 1 d{  7  sw Y   JxY w7 A# 1 d{  7  sw Y   yxY ww)z<Assert that after creating a custom function, it can be usedc                       y)Nno argr4   r4   r   r   no_argz.SmokeTest.test_create_function.<locals>.no_arg-  s    r   c                     | dz  S Nr!   r4   nums    r   one_argz/SmokeTest.test_create_function.<locals>.one_arg0      7Nr   Nr   r   r   r
   zSELECT no_arg();r   zSELECT one_arg(10);   )r"   r#   r   create_functionr&   r~   r(   )r   r   r   r   resrS   s         r   test_create_functionzSmokeTest.test_create_function*  sY    		 $$TWW- 
	- 
	-$$Xq&999$$Y7;;;zz"45 3 3LLN*  Q23 3 zz"78 - -CLLN*  Q,- -
	- 
	- 
	-9;3*3 3 3 3-*- - - -
	- 
	- 
	- 
	-s  *E9D&E9E$D(E$"D*#E$<D,=E$ D2D.D2.E$9D0:E$EE$E+E	,EE$EE$E9 E"!E9(E$*E$,E$.D20E$2E	8D;9E	 E$	EE$E	EE	E$"E9$E6*E-+E62E9c                 ^  K   d }t        j                  | j                        4 d{   }|j                  dd|d       d{    |j	                  d       d{    |j	                  d       d{    ddd      d{    y7 d7 I7 27 7 # 1 d{  7  sw Y   yxY ww)	zAssert that after creating a deterministic custom function, it can be used.

        https://sqlite.org/deterministic.html
        c                     | dz  S r   r4   r   s    r   r   z=SmokeTest.test_create_function_deterministic.<locals>.one_argE  r   r   Nr   r
   T)deterministicz"create table foo (id int, bar int)z#create index t on foo(one_arg(bar)))r"   r#   r   r   r&   )r   r   r   s      r   "test_create_function_deterministicz,SmokeTest.test_create_function_deterministic?  s     	 $$TWW- 	D 	D$$Y7$$OOO**ABBB **BCCC	D 	D 	DOB D	D 	D 	D 	Dsz   'B-BB-BBBB B8B9B=B-B	B-BBBB-B*B!B*&B-c                 \  K   g dt         ffd}t        j                  | j                        4 d {   }|j	                  |       d {    |j                  d       d {    | j                  d       d d d       d {    y 7 Y7 B7 +7 # 1 d {  7  sw Y   y xY ww)N	statementc                 (    j                  |        y r   )rQ   )r   
statementss    r   callbackz3SmokeTest.test_set_trace_callback.<locals>.callbackR  s    i(r   z	select 10)r}   r"   r#   r   set_trace_callbackr&   assertIn)r   r   r   r   s      @r   test_set_trace_callbackz!SmokeTest.test_set_trace_callbackO  s     
	) 	) $$TWW- 	3 	3''111**[)))MM+z2		3 	3 	31)	3 	3 	3 	3sh   2B,BB,BBB'B(B>B,	B
B,BBB,B)B B)%B,c                   K   t        d      }| j                  t        d      5  t        j                  |      4 d {   }| j                  |       d d d       d {    d d d        | j                  t        d      5  t        j                  |       d {    d d d        y 7 j7 K# 1 d {  7  sw Y   [xY w# 1 sw Y   _xY w7 2# 1 sw Y   y xY ww)Nz!/something/that/shouldnt/exist.dbzunable to open database)r   assertRaisesRegexr   r"   r#   rz   )r   bad_dbr   s      r   test_connect_errorzSmokeTest.test_connect_error[  s     9:##$46OP 	& ((0 & &B!!"%& &	& ##$46OP 	,##F+++	, 	,& & & & &	& 	&
 ,	, 	,s   "CCB)CB-CB+ C$CCCC 	C)C+C-B?	3B64B?	;CCCCCCc           	        K   d }t        j                  d d      }t        j                  t        d|      5  | j                  t        j                  d      5  |4 d {    	 d d d       d {    d d d        d d d        |j                  r|j                          t        d      y 7 M7 ># 1 d {  7  sw Y   NxY w# 1 sw Y   RxY w# 1 sw Y   VxY ww)Nc                  ,    t        j                  d      )NI changed my mind)rG   CancelledError)r   __s     r   _raise_cancelled_errorzESmokeTest.test_connect_base_exception.<locals>._raise_cancelled_errorf  s    (()<==r   c                  ,    t        j                  d      S )Nra   )sqlite3r#   r4   r   r   r   z7SmokeTest.test_connect_base_exception.<locals>.<lambda>i  s    '//*2Mr   @   r#   )side_effectr   z!connection thread was not stopped)r"   r%   r	   objectr   r   rG   r   _running_stop_runningAssertionError)r   r   
connections      r   test_connect_base_exceptionz%SmokeTest.test_connect_base_exceptiond  s     	> ))*MrR
LL)9OP	""7#9#9;NO	 "   		 	 $$& !DEE     		 	 	 	s|   7C !CC!B/
"C%B3'C2B13C7C?0C /C1C3C9B<:CCC	CCC c                   K   t        j                  d      4 d {   }|j                  d       d {    |j                  dddg       d {    |j	                         2 cg c3 d {   }|7 Y7 B7 (7 6 nc c}w }}| j                  |g d       d d d       d {  7   y # 1 d {  7  sw Y   y xY ww)Nra   ,create table foo (i integer, k charvar(250))insert into foo values (?, ?)r
   hellor!   world)zBEGIN TRANSACTION;z-CREATE TABLE foo (i integer, k charvar(250));z$INSERT INTO "foo" VALUES(1,'hello');z$INSERT INTO "foo" VALUES(2,'world');zCOMMIT;)r"   r#   r&   rP   iterdumpr(   )r   r   lineliness       r   test_iterdumpzSmokeTest.test_iterdumpu  s     $$Z0 	 	B**KLLL../,1M   -/KKM::DT	L ;::E:		 	 	 	 	s   CA6CB-A8B-A:B-(B *A>.A</A>2B 6C8B-:B-<A>>B ?B-C&B)'C-B?3B64B?;Cc                   K   t        j                  | j                         d {   }|j                  d       d {   }|j	                          d {    | j                  t        d      5  |j                          d {    d d d        | j                  t        d      5  |j                          d {    d d d        y 7 7 7 w7 J# 1 sw Y   IxY w7 !# 1 sw Y   y xY ww)Nr    zConnection closed)r"   r#   r   r&   r)   r   
ValueErrorr'   )r   r   r+   s      r    test_cursor_on_closed_connectionz*SmokeTest.test_cursor_on_closed_connection  s     $$TWW--zz-00hhj##J0CD 	$//###	$##J0CD 	$//###	$ 	$ .0#	$ 	$ $	$ 	$s   #C,C
C,CC,CC,1CCC
C,(C <C=C 
C,C,C,CCC,C  C)%C,c                   K   t        j                  | j                         d {   }|j                  d       d {   }g }t	        d      D ]k  }|dk(  r2|j                  t        j                  |j                                      |j                  t        j                  |j                                      m |D ]  }	 | d {     y 7 7 7 # t        j                  $ r Y ,w xY ww)Nr    d   2   )r"   r#   r   r&   rI   rQ   rG   ensure_futurer)   r'   r   ProgrammingError)r   r   r+   tasksrD   tasks         r   %test_cursor_on_closed_connection_loopz/SmokeTest.test_cursor_on_closed_connection_loop  s     $$TWW--zz-00sABwW22288:>?LL..v/@AB  D

  .0 ++ sV   #C0CC0CBC0C	C
CC0C0CC-*C0,C--C0c                    K   t        j                  | j                         d {   }|j                          d {    |j                          d {    y 7 57 7 	wr   )r"   r#   r   r)   r   s     r   test_close_twicezSmokeTest.test_close_twice  sL     $$TWW--hhj hhj . 	s1   #A!AA!AA!AA!A!A!c           	        K   d }t        j                  d      4 d {   }t        j                  d      4 d {   }|j                  d       d {    |j                  dddg       d {    |j	                          d {    | j                  t        d      5  |j                  d       d {    d d d        |j                  ||	       d {    |j                  d      4 d {   }|j                          d {   }| j                  |ddg       d d d       d {    d d d       d {    d d d       d {    y 7 :7 7 	7 7 7 # 1 sw Y   xY w7 7 ~7 h7 F# 1 d {  7  sw Y   VxY w7 M# 1 d {  7  sw Y   ]xY w7 T# 1 d {  7  sw Y   y xY ww)
Nc                     t        | ||       y r   )print)abcs      r   progressz1SmokeTest.test_backup_aiosqlite.<locals>.progress  s    !QNr   ra   r   r   r   r   no such table: foor;   )r   )
r"   r#   r&   rP   r>   r   r   backupr'   r(   )r   r   db1db2r+   r,   s         r   test_backup_aiosqlitezSmokeTest.test_backup_aiosqlite  s    	 j)	E 	E-0j)	E 	E-0++LMMM///,1M   **,''(8:NO 7kk"56667 **S8*444{{#67 E E6#__..  l'CD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 	EsP  F?EF?F*EF*FEF2E"3F
E$F%E(:E&
;E(?FE4F7E6
8F;E<E8
E<(F3E:4F8F*FF*F?F(F?F*F"F$F&E((E1-F6F8E<:F<FFF
FF*F%	FF%	!F*(F?*F<0F31F<8F?c                   K   t        j                  d      4 d {   }t        j                  d      5 }|j                  d       d {    |j	                  dddg       d {    |j                          d {    | j                  t        d      5  |j                  d       d d d        |j                  |       d {    |j                  d      }|j                         }| j                  |ddg       d d d        d d d       d {    y 7 7 7 7 # 1 sw Y   xxY w7 f# 1 sw Y   0xY w7 '# 1 d {  7  sw Y   y xY ww)Nra   r   r   r   r   r   r;   )r"   r#   r   r&   rP   r>   r   r   r   r'   r(   )r   r   r   r+   r,   s        r   test_backup_sqlitezSmokeTest.test_backup_sqlite  sF    $$Z0 	E 	EC, Ekk"PQQQoo3lL5Q   jjl""++,<>RS 5KK 345 jjo%%%89(  l'CDE	E 	E 	EQ #5 5 &E E	E 	E 	E 	Es   EDED?D1DD1'D(D1?D! D1D#,D1D/	9D1D?
ED=ED1D1!D1#D,(D11D:	6D?=E?EEEEN)r7   r8   r9   classmethodr   r   r-   r/   rA   rK   rM   rT   rl   rn   rr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r   r   r   r      s     6
1@,(,&+B*-*52n:	-*D 
3,F"&$E.Er   r   )rG   r   pathlibr   r   tempfiler   	threadingr   unittestr   r   unittest.mockr	   r"   helpersr   r   r4   r   r   <module>r      s6       $ '  6   !E' Er   