
    daf                     l    d dl Zd dlZ G d dej                        Zedk(  r ej                          yy)    Nc                   x    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d Zd Zy)BackupTestsc                     t        j                  d      x}| _        |j                  d       |j	                  dddg       |j                          y )N:memory:zCREATE TABLE foo (key INTEGER) INSERT INTO foo (key) VALUES (?)      )sqliteconnectcxexecuteexecutemanycommit)selfr   s     8/root/Python-3.12.4/Lib/test/test_sqlite3/test_backup.pysetUpzBackupTests.setUp   s@    ~~j11TW


34
9D$<H
		    c                 8    | j                   j                          y N)r   closer   s    r   tearDownzBackupTests.tearDown   s    r   c                     |j                  d      j                         }| j                  |d   d   d       | j                  |d   d   d       y )Nz SELECT key FROM foo ORDER BY keyr   r	      r   )r   fetchallassertEqual)r   bckcxresults      r   verify_backupzBackupTests.verify_backup   sJ    ABKKM1q)1q)r   c                    | j                  t              5  | j                  j                  d        d d d        | j                  t              5  | j                  j                          d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY wr   assertRaises	TypeErrorr   backupr   s    r   test_bad_targetzBackupTests.test_bad_target   sk    y) 	!GGNN4 	!y) 	GGNN	 		! 	!	 	s   A3A?3A<?Bc                     | j                  t              5  | j                  j                  d       d d d        y # 1 sw Y   y xY w)Nzsome_file_name.dbr#   r   s    r   test_bad_target_filenamez$BackupTests.test_bad_target_filename   s6    y) 	0GGNN./	0 	0 	0s	   ;Ac                     | j                  t              5  | j                  j                  | j                         d d d        y # 1 sw Y   y xY wr   )r$   
ValueErrorr   r&   r   s    r   test_bad_target_same_connectionz+BackupTests.test_bad_target_same_connection   s9    z* 	$GGNN477#	$ 	$ 	$s   &AAc                     t        j                  d      }|j                          | j                  t         j                        5  | j
                  j                  |       d d d        y # 1 sw Y   y xY wNr   )r   r   r   r$   ProgrammingErrorr   r&   r   bcks     r   !test_bad_target_closed_connectionz-BackupTests.test_bad_target_closed_connection"   sR    nnZ(		v667 	 GGNN3	  	  	 s   A**A3c                    t        j                  d      }t        j                  d      }|j                          | j                  t         j                        5  |j                  |       d d d        y # 1 sw Y   y xY wr.   )r   r   r   r$   r/   r&   )r   r1   sources      r   !test_bad_source_closed_connectionz-BackupTests.test_bad_source_closed_connection(   s\    nnZ(
+v667 	MM#	 	 	s   A55A>c                    t        j                  d      }|j                  d       |j                  dddg       | j	                  t         j
                        5 }| j                  j                  |       d d d        t         j                  dk  r&| j                  t        j                        d       y y # 1 sw Y   CxY w)Nr   zCREATE TABLE bar (key INTEGER)z INSERT INTO bar (key) VALUES (?)r   r
   )r	      r7   ztarget is in transaction)r   r   r   r   r$   OperationalErrorr   r&   sqlite_version_infor   str	exceptionr   r1   cms      r   test_bad_target_in_transactionz*BackupTests.test_bad_target_in_transaction/   s    nnZ(45:T4LIv667 	 2GGNN3	 %%	1S.0JK 2	  	 s   B88Cc                     | j                  t              5  t        j                  d      5 }| j                  j                  |d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nr   r   )r$   r%   r   r   r   r&   r0   s     r   test_keyword_only_argsz"BackupTests.test_keyword_only_args8   s_    y) 	'
+ 'ssA&'	' 	'' '	' 	's"   A&A	A&A#	A&&A/c                     t        j                  d      5 }| j                  j                  |       | j	                  |       d d d        y # 1 sw Y   y xY wr.   )r   r   r   r&   r!   r0   s     r   test_simplezBackupTests.test_simple=   sC    ^^J' 	$3GGNN3s#	$ 	$ 	$s   -AAc                    g fd}t        j                  d      5 }| j                  j                  |d|       | j	                  |       d d d        | j                  t              d       | j                  d   t         j                         | j                  d   t         j                         y # 1 sw Y   kxY w)Nc                 (    j                  |        y r   appendstatus	remainingtotaljournals      r   progressz+BackupTests.test_progress.<locals>.progressE   s    NN6"r   r   r   pagesrL      r   )	r   r   r   r&   r!   r   len	SQLITE_OKSQLITE_DONEr   rL   r1   rK   s      @r   test_progresszBackupTests.test_progressB   s    	# ^^J' 	$3GGNN3a(N;s#	$ 	Wq)V%5%56V%7%78	$ 	$s   0B88Cc                 $   g fd}t        j                  d      5 }| j                  j                  ||       | j	                  |       d d d        | j                  t              d       | j                  d   d       y # 1 sw Y   :xY w)Nc                 (    j                  |       y r   rE   rG   s      r   rL   z?BackupTests.test_progress_all_pages_at_once_1.<locals>.progressS       NN9%r   r   rL   r   r   r   r   r   r&   r!   r   rP   rS   s      @r   !test_progress_all_pages_at_once_1z-BackupTests.test_progress_all_pages_at_once_1P   s~    	& ^^J' 	$3GGNN3N2s#	$ 	Wq)Q'	$ 	$s   /BBc                 &   g fd}t        j                  d      5 }| j                  j                  |d|       | j	                  |       d d d        | j                  t              d       | j                  d   d       y # 1 sw Y   :xY w)Nc                 (    j                  |       y r   rE   rG   s      r   rL   z?BackupTests.test_progress_all_pages_at_once_2.<locals>.progress`   rW   r   r   rM   r   r   rY   rS   s      @r   !test_progress_all_pages_at_once_2z-BackupTests.test_progress_all_pages_at_once_2]   s    	& ^^J' 	$3GGNN3b8N<s#	$ 	Wq)Q'	$ 	$s   0BBc                 2   | j                  t              5 }t        j                  d      5 }| j                  j                  |dd       d d d        d d d        | j                  t        j                        d       y # 1 sw Y   7xY w# 1 sw Y   ;xY w)Nr   r   barrM   z$progress argument must be a callable)	r$   r%   r   r   r   r&   r   r:   r;   )r   r=   r1   s      r   test_non_callable_progressz&BackupTests.test_non_callable_progressj   s|    y) 	=R
+ =ss!e<=	= 	R\\*,RS= =	= 	=s"   BBBB
	BBc                     g  fd}t        j                  d      5 } j                  j                  |d|        j	                  |       |j                  d      j                         } j                  |d   d   d       d d d         j                  t              d        j                  d   d        j                  d   d        j                  d	   d       y # 1 sw Y   dxY w)
Nc                     s:j                   j                  d|dz   f       j                   j                          j                  |       y )Nr   i  )r   r   r   rF   )rH   rI   rJ   rK   r   s      r   rL   z5BackupTests.test_modifying_progress.<locals>.progresss   s:     BYt^DUV NN9%r   r   r   rM   z2SELECT key FROM foo WHERE key >= 1000 ORDER BY keyr   i  r	   rO   )	r   r   r   r&   r!   r   r   r   rP   )r   rL   r1   r    rK   s   `   @r   test_modifying_progressz#BackupTests.test_modifying_progressp   s    	& ^^J' 	13GGNN3a(N;s#[[ "1 22:(*  VAYq\40	1 	Wq)Q'Q'Q'	1 	1s   A'C**C3c                 6   d }| j                  t              5 }t        j                  d      5 }| j                  j                  ||       d d d        d d d        | j                  t        j                        d       y # 1 sw Y   7xY w# 1 sw Y   ;xY w)Nc                     t        d      )Nnearly out of space)SystemError)rH   rI   rJ   s      r   rL   z3BackupTests.test_failing_progress.<locals>.progress   s    344r   r   rX   rg   )	r$   rh   r   r   r   r&   r   r:   r;   )r   rL   errr1   s       r   test_failing_progressz!BackupTests.test_failing_progress   s    	5 {+ 	7s
+ 7ssX67	7 	S]]+-BC7 7	7 	7s"   BBBB	BBc                    t        j                  d      5 }| j                  j                  |d       d d d        t        j                  d      5 }| j                  j                  |d       d d d        | j	                  t         j
                        5 }t        j                  d      5 }| j                  j                  |d       d d d        d d d        | j                  dt        j                               | j                  j                  d       | j                  j                  d       | j                  j                  d	d
dg       | j                  j                          t        j                  d      5 }| j                  j                  |d       | j                  |       d d d        y # 1 sw Y   xY w# 1 sw Y   ZxY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr   main)nametempznon-existingzunknown databasez)ATTACH DATABASE ':memory:' AS attached_dbz*CREATE TABLE attached_db.foo (key INTEGER)z,INSERT INTO attached_db.foo (key) VALUES (?)r   r
   attached_db)r   r   r   r&   r$   r8   assertInr:   r;   r   r   r   r!   r<   s      r   test_database_source_namez%BackupTests.test_database_source_name   s   ^^J' 	-3GGNN3VN,	-^^J' 	-3GGNN3VN,	-v667 	92
+ 9ss89	9 	(#bll*;<CDDEJTSWLY^^J' 	$3GGNN3]N3s#	$ 	$	- 	-	- 	-9 9	9 	9	$ 	$sG   F:GG!,G
G!/G.:GGG	G!!G+.G7N)__name__
__module____qualname__r   r   r!   r'   r)   r,   r2   r5   r>   r@   rB   rT   rZ   r^   ra   rd   rj   rq    r   r   r   r      s_    *
0$ L'
$
9((T(.D$r   r   __main__)sqlite3r   unittestTestCaser   rr   rl   ru   r   r   <module>rz      s:     [$(## [$| zHMMO r   