U .c@sPddlZddlZeejdkdGdddejZddZedkrLe dS) N) zBackup API not supportedc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!d"Zd#d$Zd%S)& BackupTestscCs6td}|_|d|dddg|dS)N:memory:zCREATE TABLE foo (key INTEGER) INSERT INTO foo (key) VALUES (?)r)sqliteconnectcxexecute executemanycommit)selfr r8/opt/alt/python38/lib64/python3.8/sqlite3/test/backup.pysetUps zBackupTests.setUpcCs|jdSN)r closerrrrtearDown szBackupTests.tearDowncCs:|d}||ddd||ddddS)Nz SELECT key FROM foo ORDER BY keyrrr )rfetchall assertEqual)rZbckcxresultrrr verify_backupszBackupTests.verify_backupc Cs&|t|jdW5QRXdSr assertRaises TypeErrorr backuprrrrtest_bad_target_nones z BackupTests.test_bad_target_nonec Cs&|t|jdW5QRXdS)Nzsome_file_name.dbrrrrrtest_bad_target_filenames z$BackupTests.test_bad_target_filenamec Cs(|t|j|jW5QRXdSr)r ValueErrorr r!rrrrtest_bad_target_same_connections z+BackupTests.test_bad_target_same_connectionc Cs:td}||tj|j|W5QRXdSNr)r r rrProgrammingErrorr r!rbckrrr!test_bad_target_closed_connection!s z-BackupTests.test_bad_target_closed_connectionc CsBtd}td}||tj||W5QRXdSr&)r r rrr'r!)rr)sourcerrr!test_bad_source_closed_connection's   z-BackupTests.test_bad_source_closed_connectionc Cshtd}|d|dddg|tj}|j|W5QRXtjdkrd| t |j ddS)NrzCREATE TABLE bar (key INTEGER)z INSERT INTO bar (key) VALUES (?)rr )rr-ztarget is in transaction) r r rrrOperationalErrorr r!sqlite_version_inforstr exceptionrr)cmrrrtest_bad_target_in_transaction.s   z*BackupTests.test_bad_target_in_transactionc Cs>|t*td}|j|dW5QRXW5QRXdS)Nrr)rr r r r r!r(rrrtest_keyword_only_args7s  z"BackupTests.test_keyword_only_argsc Cs0td}|j|||W5QRXdSr&)r r r r!rr(rrr test_simple<s  zBackupTests.test_simplec szgfdd}td"}|jj|d|d||W5QRX|td|dtj|dtjdS)Ncs|dSrappendZstatusZ remainingZtotaljournalrrprogressDsz+BackupTests.test_progress..progressrrZpagesr<r) r r r r!rrlenZ SQLITE_OKZ SQLITE_DONErr<r)rr:r test_progressAs  zBackupTests.test_progressc sdgfdd}td }|jj||d||W5QRX|td|dddS)Ncs|dSrr7r9r:rrr<Rsz?BackupTests.test_progress_all_pages_at_once_1..progressrr<rrr r r r!rrr?r@rr:r!test_progress_all_pages_at_once_1Os  z-BackupTests.test_progress_all_pages_at_once_1c sfgfdd}td"}|jj|d|d||W5QRX|td|dddS)Ncs|dSrr7r9r:rrr<_sz?BackupTests.test_progress_all_pages_at_once_2..progressrr=rrrCr@rr:r!test_progress_all_pages_at_once_2\s  z-BackupTests.test_progress_all_pages_at_once_2c CsT|t.}td}|jj|dddW5QRXW5QRX|t|jddS)NrrZbarr=z$progress argument must be a callable) rr r r r r!rr0r1)rr3r)rrrtest_non_callable_progressis  &z&BackupTests.test_non_callable_progressc sgfdd}tdD}jj|d|d||d}|dddW5QRXtd ddddd ddS) Ncs0s"jd|dfj|dS)Nri)r rrr8r9r;rrrr<rs z5BackupTests.test_modifying_progress..progressrrr=z2SELECT key FROM foo WHERE key >= 1000 ORDER BY keyrirr>) r r r r!rrrrr?)rr<r)rrrHrtest_modifying_progressos  z#BackupTests.test_modifying_progressc CsZdd}|t,}td}|jj||dW5QRXW5QRX|t|jddS)NcSs tddS)Nnearly out of space) SystemErrorr9rrrr<sz3BackupTests.test_failing_progress..progressrrBrJ) rrKr r r r!rr0r1)rr<errr)rrrtest_failing_progresss   $z!BackupTests.test_failing_progressc Cstd}|jj|ddW5QRXtd}|jj|ddW5QRX|tj,}td}|jj|ddW5QRXW5QRX|t|jddg|j d|j d |j d d d g|j td }|jj|d d| |W5QRXdS)Nrmain)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 (?)rr Z attached_db) r r r r!rr.ZassertInr0r1rrrrr2rrrtest_database_source_names$   $    z%BackupTests.test_database_source_nameN)__name__ __module__ __qualname__rrrr"r#r%r*r,r4r5r6rArDrFrGrIrMrPrrrrrs$    rcCs ttSr)unittestZ makeSuiterrrrrsuitesrU__main__) Zsqlite3r rTZskipIfr/ZTestCaserrUrQrNrrrrs