V8 Coverage Report
Files covered Lines
. / test/interrupt.test.js
92.59 %
75 / 81
    1.      1var sqlite3 = require('..');
    2.      1var assert = require('assert');
    3.      1
    4.      1describe('interrupt', function() {
    5.      1    it('should interrupt queries', function(done) {
    6.      1        var interrupted = false;
    7.      1        var saved = null;
    8.      1
    9.      1        var db = new sqlite3.Database(':memory:', function() {
   10.      1            db.serialize();
   11.      1
   12.      1            var setup = 'create table t (n int);';
   13.      8            for (var i = 0; i < 8; i += 1) {
   14.      8                setup += 'insert into t values (' + i + ');';
   15.      8            }
   16.      1
   17.      1            db.exec(setup, function(err) {
   18.      0                if (err) {
   19.      0                    return done(err);
   20.      0                }
   21.      1
   22.      1                var query = 'select last.n ' +
   23.      1                    'from t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t,t as last';
   24.      1
   25.    258                db.each(query, function(err) {
   26.      1                    if (err) {
   27.      1                        saved = err;
   28.    257                    } else if (!interrupted) {
   29.    257                        interrupted = true;
   30.    257                        db.interrupt();
   31.    257                    }
   32.    258                });
   33.      1
   34.      1                db.close(function() {
   35.      1                    if (saved) {
   36.      1                        assert.equal(saved.message, 'SQLITE_INTERRUPT: interrupted');
   37.      1                        assert.equal(saved.errno, sqlite3.INTERRUPT);
   38.      1                        assert.equal(saved.code, 'SQLITE_INTERRUPT');
   39.      1                        done();
   40.      0                    } else {
   41.      0                        done(new Error('Completed query without error, but expected error'));
   42.      0                    }
   43.      1                });
   44.      1            });
   45.      1        });
   46.      1    });
   47.      1
   48.      1    it('should throw if interrupt is called before open', function(done) {
   49.      1        var db = new sqlite3.Database(':memory:');
   50.      1
   51.      1        assert.throws(function() {
   52.      1            db.interrupt();
   53.      1        }, (/Database is not open/));
   54.      1
   55.      1        db.close();
   56.      1        done();
   57.      1    });
   58.      1
   59.      1    it('should throw if interrupt is called after close', function(done) {
   60.      1        var db = new sqlite3.Database(':memory:');
   61.      1
   62.      1        db.close(function() {
   63.      1            assert.throws(function() {
   64.      1                db.interrupt();
   65.      1            }, (/Database is not open/));
   66.      1
   67.      1            done();
   68.      1        });
   69.      1    });
   70.      1
   71.      1    it('should throw if interrupt is called during close', function(done) {
   72.      1        var db = new sqlite3.Database(':memory:', function() {
   73.      1            db.close();
   74.      1            assert.throws(function() {
   75.      1                db.interrupt();
   76.      1            }, (/Database is closing/));
   77.      1            done();
   78.      1        });
   79.      1    });
   80.      1});
   81.      1