Commit ffc9c2cd authored by gwenn's avatar gwenn

Test Backup misuse.

parent e0cd2ca4
......@@ -53,6 +53,9 @@ type Backup struct {
// Copy up to N pages between the source and destination databases
// (See http://sqlite.org/c3ref/backup_finish.html#sqlite3backupstep)
func (b *Backup) Step(npage int) error {
if b == nil {
return ErrMisuse
}
rv := C.sqlite3_backup_step(b.sb, C.int(npage))
if rv == C.SQLITE_OK || Errno(rv) == ErrBusy || Errno(rv) == ErrLocked { // TODO Trace busy/locked errors
return nil
......@@ -101,6 +104,9 @@ func (b *Backup) Run(npage int, sleepNs time.Duration, c chan<- BackupStatus) er
// Finish/stop the backup
// (See http://sqlite.org/c3ref/backup_finish.html#sqlite3backupfinish)
func (b *Backup) Close() error {
if b == nil {
return ErrMisuse
}
rv := C.sqlite3_backup_finish(b.sb)
if rv != C.SQLITE_OK {
return Errno(rv)
......
......@@ -24,4 +24,21 @@ func TestBackup(t *testing.T) {
}()
err = bck.Run(10, 0, cbs)
checkNoError(t, err, "couldn't do backup: %#v")
err = bck.Close()
checkNoError(t, err, "couldn't close backup twice: %#v")
}
func TestBackupMisuse(t *testing.T) {
db := open(t)
defer db.Close()
bck, err := NewBackup(db, "main", db, "main")
if bck != nil || err == nil {
t.Error("source and destination must be distinct")
}
err = bck.Run(10, 0, nil)
if err == nil {
t.Error("Misuse expected")
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment