B @sPddlZddlZeejdkdGdddejZddZedkrLe dS) N) zBackup API not supportedc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#S)$ BackupTestscCs6td}|_|d|dddg|dS)Nz:memory:zCREATE TABLE foo (key INTEGER)z INSERT INTO foo (key) VALUES (?))r))sqliteconnectcxexecute executemanycommit)selfr r8/opt/alt/python37/lib64/python3.7/sqlite3/test/backup.pysetUps zBackupTests.setUpcCs|jdS)N)r close)r rrrtearDown szBackupTests.tearDowncCs:|d}||ddd||ddddS)Nz SELECT key FROM foo ORDER BY keyrrr)r fetchall assertEqual)r Zbckcxresultrrr verify_backupszBackupTests.verify_backupc Cs&|t|jdWdQRXdS)N) assertRaises TypeErrorr backup)r rrrtest_bad_target_nones z BackupTests.test_bad_target_nonec Cs&|t|jdWdQRXdS)Nzsome_file_name.db)rrr r)r rrrtest_bad_target_filenames z$BackupTests.test_bad_target_filenamec Cs(|t|j|jWdQRXdS)N)r ValueErrorr r)r rrrtest_bad_target_same_connections z+BackupTests.test_bad_target_same_connectionc Cs:td}||tj|j|WdQRXdS)Nz:memory:)rrrrZProgrammingErrorr r)r bckrrr!test_bad_target_closed_connection!s z-BackupTests.test_bad_target_closed_connectionc Cshtd}|d|dddg|tj}|j|WdQRXtjdkrd| t |j ddS)Nz:memory:zCREATE TABLE bar (key INTEGER)z INSERT INTO bar (key) VALUES (?))r)r)rr!ztarget is in transaction) rrr r rOperationalErrorr rsqlite_version_inforstr exception)r rcmrrrtest_bad_target_in_transaction's   z*BackupTests.test_bad_target_in_transactionc Cs>|t*td}|j|dWdQRXWdQRXdS)Nz:memory:r)rrrrr r)r rrrrtest_keyword_only_args0s  z"BackupTests.test_keyword_only_argsc Cs0td}|j|||WdQRXdS)Nz:memory:)rrr rr)r rrrr test_simple5s  zBackupTests.test_simplec szgfdd}td"}|jj|d|d||WdQRX|td|dtj|dtjdS)Ncs|dS)N)append)status remainingtotal)journalrrprogress=sz+BackupTests.test_progress..progressz:memory:r)pagesr/r) rrr rrrlenZ SQLITE_OKZ SQLITE_DONE)r r/rr)r.r test_progress:s  zBackupTests.test_progressc sdgfdd}td }|jj||d||WdQRX|td|dddS)Ncs|dS)N)r*)r+r,r-)r.rrr/Ksz?BackupTests.test_progress_all_pages_at_once_1..progressz:memory:)r/rr)rrr rrrr2)r r/rr)r.r!test_progress_all_pages_at_once_1Hs  z-BackupTests.test_progress_all_pages_at_once_1c sfgfdd}td"}|jj|d|d||WdQRX|td|dddS)Ncs|dS)N)r*)r+r,r-)r.rrr/Xsz?BackupTests.test_progress_all_pages_at_once_2..progressz:memory:)r0r/rr)rrr rrrr2)r r/rr)r.r!test_progress_all_pages_at_once_2Us  z-BackupTests.test_progress_all_pages_at_once_2c CsT|t.}td}|jj|dddWdQRXWdQRX|t|jddS)Nz:memory:rZbar)r0r/z$progress argument must be a callable) rrrrr rrr$r%)r r&rrrrtest_non_callable_progressbs  &z&BackupTests.test_non_callable_progressc sgfdd}tdD}jj|d|d||d}|dddWdQRXtd ddddd ddS) Ncs0s"jd|dfj|dS)Nz INSERT INTO foo (key) VALUES (?)i)r r r r*)r+r,r-)r.r rrr/ks z5BackupTests.test_modifying_progress..progressz:memory:r)r0r/z2SELECT key FROM foo WHERE key >= 1000 ORDER BY keyrirr1) rrr rrr rrr2)r r/rrr)r.r rtest_modifying_progresshs  z#BackupTests.test_modifying_progressc CsZdd}|t,}td}|jj||dWdQRXWdQRX|t|jddS)NcSs tddS)Nznearly out of space) SystemError)r+r,r-rrrr/sz3BackupTests.test_failing_progress..progressz:memory:)r/znearly out of space) rr9rrr rrr$r%)r r/errrrrrtest_failing_progresss   $z!BackupTests.test_failing_progressc Cstd}|jj|ddWdQRXtd}|jj|ddWdQRX|tj,}td}|jj|ddWdQRXWdQRX|t|jddg|j d|j d |j d d d g|j td }|jj|d d| |WdQRXdS)Nz:memory:main)nameZtempz non-existingzSQL logic errorz#SQL logic error or missing databasez)ATTACH DATABASE ':memory:' AS attached_dbz*CREATE TABLE attached_db.foo (key INTEGER)z,INSERT INTO attached_db.foo (key) VALUES (?))r)rZ attached_db) rrr rrr"ZassertInr$r%r r r r)r rr&rrrtest_database_source_names"   $     z%BackupTests.test_database_source_nameN)__name__ __module__ __qualname__rrrrrrr r'r(r)r3r4r6r7r8r;r>rrrrrs"    rcCs ttS)N)unittestZ makeSuiterrrrrsuitesrC__main__) Zsqlite3rrBZskipIfr#ZTestCaserrCr?r<rrrrs