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


3444
9D$<HHH
		    c                 8    | j                                          d S N)r   closer   s    r   tearDownzBackupTests.tearDown   s    r   c                     |                     d                                          }|                     |d         d         d           |                     |d         d         d           d S )Nz SELECT key FROM foo ORDER BY keyr   r	      r   )r   fetchallassertEqual)r   bckcxresults      r   verify_backupzBackupTests.verify_backup   sb    ABBKKMM1q)))1q)))))r   c                 6   |                      t                    5  | j                            d            d d d            n# 1 swxY w Y   |                      t                    5  | j                                         d d d            d S # 1 swxY w Y   d S r   assertRaises	TypeErrorr   backupr   s    r   test_bad_targetzBackupTests.test_bad_target   s	   y)) 	! 	!GNN4   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!y)) 	 	GNN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s#   AA	A'BBBc                     |                      t                    5  | j                            d           d d d            d S # 1 swxY w Y   d S )Nzsome_file_name.dbr#   r   s    r   test_bad_target_filenamez$BackupTests.test_bad_target_filename   s    y)) 	0 	0GNN.///	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AA
Ac                     |                      t                    5  | j                            | j                   d d d            d S # 1 swxY w Y   d S r   )r$   
ValueErrorr   r&   r   s    r   test_bad_target_same_connectionz+BackupTests.test_bad_target_same_connection   s    z** 	$ 	$GNN47###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s    AAAc                     t          j        d          }|                                 |                     t           j                  5  | j                            |           d d d            d S # 1 swxY w Y   d S Nr   )r   r   r   r$   ProgrammingErrorr   r&   r   bcks     r   !test_bad_target_closed_connectionz-BackupTests.test_bad_target_closed_connection"   s    nZ((		v677 	  	 GNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   A00A47A4c                    t          j        d          }t          j        d          }|                                 |                     t           j                  5  |                    |           d d d            d S # 1 swxY w Y   d S r.   )r   r   r   r$   r/   r&   )r   r1   sources      r   !test_bad_source_closed_connectionz-BackupTests.test_bad_source_closed_connection(   s    nZ((
++v677 	 	MM#	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   A??BBc                    t          j        d          }|                    d           |                    dddg           |                     t           j                  5 }| j                            |           d d d            n# 1 swxY w Y   t           j        dk     r*| 	                    t          |j                  d           d S d S )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    nZ((4555:T4LIIIv677 	 2GNN3	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 %	11S..0JKKKKK 21s   !BBBc                     |                      t                    5  t          j        d          5 }| j                            |d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r   )r$   r%   r   r   r   r&   r0   s     r   test_keyword_only_argsz"BackupTests.test_keyword_only_args8   s    y)) 	' 	'
++ 'ssA&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's4   A0AA0A	A0A	 A00A47A4c                     t          j        d          5 }| j                            |           |                     |           d d d            d S # 1 swxY w Y   d S r.   )r   r   r   r&   r!   r0   s     r   test_simplezBackupTests.test_simple=   s    ^J'' 	$3GNN3s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$s   0AAAc                    g fd}t          j        d          5 }| j                            |d|           |                     |           d d d            n# 1 swxY w Y   |                     t                    d           |                     d         t           j                   |                     d         t           j                   d S )Nc                 2                         |            d S 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GNN3a(N;;;s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	Wq)))V%5666V%788888   3AA #A c                 N   g fd}t          j        d          5 }| j                            ||           |                     |           d d d            n# 1 swxY w Y   |                     t                    d           |                     d         d           d S )Nc                 2                         |           d S 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GNN3N222s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	Wq)))Q'''''s   2AA"Ac                 P   g fd}t          j        d          5 }| j                            |d|           |                     |           d d d            n# 1 swxY w Y   |                     t                    d           |                     d         d           d S )Nc                 2                         |           d S r   rE   rG   s      r   rL   z?BackupTests.test_progress_all_pages_at_once_2.<locals>.progress`   rX   r   r   rM   r   r   rZ   rS   s      @r   !test_progress_all_pages_at_once_2z-BackupTests.test_progress_all_pages_at_once_2]   s    	& 	& 	& 	& 	& ^J'' 	$3GNN3b8N<<<s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	Wq)))Q'''''rU   c                 L   |                      t                    5 }t          j        d          5 }| j                            |dd           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )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SSSs4   A1AA1A	A1!A	"A11A58A5c                 V    g  fd}t          j        d          5 } j                            |d|                                |           |                    d                                          }                     |d         d         d           d d d            n# 1 swxY w Y                        t                    d                                d         d                                d         d                                d	         d           d S )
Nc                     s8j                             d|dz   f           j                                                              |           d S )Nr   i  )r   r   r   rF   )rH   rI   rJ   rK   r   s      r   rL   z5BackupTests.test_modifying_progress.<locals>.progresss   sS     ! BYt^DUVV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   so   	& 	& 	& 	& 	& 	& ^J'' 	13GNN3a(N;;;s###[[ "1 2 22:(**  VAYq\4000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	Wq)))Q'''Q'''Q'''''s   A<B''B+.B+c                 P   d }|                      t                    5 }t          j        d          5 }| j                            ||           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nc                      t          d          )Nnearly out of space)SystemError)rH   rI   rJ   s      r   rL   z3BackupTests.test_failing_progress.<locals>.progress   s    3444r   r   rY   rh   )	r$   ri   r   r   r   r&   r   r:   r;   )r   rL   errr1   s       r   test_failing_progressz!BackupTests.test_failing_progress   s   	5 	5 	5 {++ 	7s
++ 7ssX6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	S]++-BCCCCCs4   A3AA3A 	 A3#A 	$A33A7:A7c                    t          j        d          5 }| j                            |d           d d d            n# 1 swxY w Y   t          j        d          5 }| j                            |d           d d d            n# 1 swxY w Y   |                     t           j                  5 }t          j        d          5 }| j                            |d           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   |                     dt          |j                             | j        	                    d           | j        	                    d           | j        
                    d	d
dg           | j                                         t          j        d          5 }| j                            |d           |                     |           d d d            d S # 1 swxY w Y   d S )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GNN3VN,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-^J'' 	-3GNN3VN,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-v677 	92
++ 9ss8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	(#bl*;*;<<<CDDDDEEEJTSWLYYY^J'' 	$3GNN3]N333s###	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$si   >AABB
B
0DC."D.C2	2D5C2	6DD	D	62G55G9<G9N)__name__
__module____qualname__r   r   r!   r'   r)   r,   r2   r5   r>   r@   rB   rT   r[   r_   rb   re   rk   rr    r   r   r   r      s+           * * *
  0 0 0$ $ $       L L L' ' '
$ $ $
9 9 9( ( (( ( (T T T( ( (.D D D$ $ $ $ $r   r   __main__)sqlite3r   unittestTestCaser   rs   rm   rv   r   r   <module>r{      sv        [$ [$ [$ [$ [$(# [$ [$ [$| zHMOOOOO r   