Merge pull request #60 from mapbox/geocoder-err-handling
Handle table not found error in getGeocoderData
This commit is contained in:
@@ -600,6 +600,7 @@ MBTiles.prototype.putInfo = function(data, callback) {
|
||||
// Implements carmen#getGeocoderData method.
|
||||
MBTiles.prototype.getGeocoderData = function(type, shard, callback) {
|
||||
return this._db.get('SELECT data FROM geocoder_data WHERE type = ? AND shard = ?', type, shard, function(err, row) {
|
||||
if (err && err.code === 'SQLITE_ERROR' && err.errno === 1) return callback();
|
||||
if (err) return callback(err);
|
||||
if (!row) return callback();
|
||||
zlib.inflate(row.data, callback);
|
||||
|
||||
@@ -13,12 +13,16 @@ var expected = {
|
||||
};
|
||||
|
||||
var tmp = require('os').tmpdir() + '/mbtiles-test-' + (+new Date).toString(16);
|
||||
var tilesOnly;
|
||||
var index;
|
||||
var from;
|
||||
var to;
|
||||
|
||||
try { fs.mkdirSync(tmp); } catch(err) { throw err; }
|
||||
|
||||
tape('setup', function(assert) {
|
||||
tilesOnly = new MBTiles(tmp + '/tilesOnly.mbtiles', assert.end);
|
||||
});
|
||||
tape('setup', function(assert) {
|
||||
index = new MBTiles(__dirname + '/fixtures/geocoder_data.mbtiles', assert.end);
|
||||
});
|
||||
@@ -37,6 +41,22 @@ tape('getGeocoderData', function(assert) {
|
||||
});
|
||||
});
|
||||
|
||||
tape('getGeocoderData (nodata)', function(assert) {
|
||||
index.getGeocoderData('term', 1e6, function(err, buffer) {
|
||||
assert.ifError(err);
|
||||
assert.equal(buffer, undefined);
|
||||
assert.end();
|
||||
});
|
||||
});
|
||||
|
||||
tape('getGeocoderData (no table)', function(assert) {
|
||||
tilesOnly.getGeocoderData('term', 0, function(err, buffer) {
|
||||
assert.ifError(err);
|
||||
assert.equal(buffer, undefined);
|
||||
assert.end();
|
||||
});
|
||||
});
|
||||
|
||||
tape('putGeocoderData', function(assert) {
|
||||
to.startWriting(function(err) {
|
||||
assert.ifError(err);
|
||||
@@ -144,19 +164,14 @@ tape('geocoderCentroid USA', function(assert) {
|
||||
});
|
||||
});
|
||||
|
||||
tape('cleanup', function(assert) { tilesOnly.close(assert.end); });
|
||||
tape('cleanup', function(assert) { index.close(assert.end); });
|
||||
tape('cleanup', function(assert) { from.close(assert.end); });
|
||||
tape('cleanup', function(assert) { to.close(assert.end); });
|
||||
tape('cleanup', function(assert) {
|
||||
index.close(function(err) {
|
||||
if (err) throw err;
|
||||
from.close(function(err) {
|
||||
if (err) throw err;
|
||||
to.close(function(err) {
|
||||
if (err) throw err;
|
||||
try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; }
|
||||
try { fs.rmdirSync(tmp); } catch(err) { throw err; }
|
||||
assert.end();
|
||||
});
|
||||
});
|
||||
});
|
||||
try { fs.unlinkSync(tmp + '/tilesOnly.mbtiles'); } catch(err) { throw err; }
|
||||
try { fs.unlinkSync(tmp + '/indexed.mbtiles'); } catch(err) { throw err; }
|
||||
try { fs.rmdirSync(tmp); } catch(err) { throw err; }
|
||||
assert.end();
|
||||
});
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user