diff --git a/lib/directoryindex.js b/lib/directoryindex.js index 131432a..de8fa49 100644 --- a/lib/directoryindex.js +++ b/lib/directoryindex.js @@ -40,14 +40,12 @@ DirectoryIndex.prototype.update = function() { var index = this; fs.readdir(index.filepath, function(err, files) { index.err = err; - if (!err) { - for (var result = index.list = {}, i = 0; i < files.length; i++) { - var name = files[i].match(/^([\w-]+)\.mbtiles$/); - if (name) { - result[name[1]] = 'mbtiles://' + path.join(index.filepath, name[0]); - } + index.list = {}; + if (!err) for (var i = 0; i < files.length; i++) { + var name = files[i].match(/^([\w-]+)\.mbtiles$/); + if (name) { + index.list[name[1]] = 'mbtiles://' + path.join(index.filepath, name[0]); } - index.list = result; } index.emit('updated'); }); diff --git a/test/list.test.js b/test/list.test.js new file mode 100644 index 0000000..0722a17 --- /dev/null +++ b/test/list.test.js @@ -0,0 +1,29 @@ +process.env.NODE_ENV = 'test'; + +var fs = require('fs'); +var Step = require('step'); +var assert = require('assert'); +var MBTiles = require('..'); + +var fixtures = { + doesnotexist: __dirname + '/doesnotexist' +}; + +try { fs.unlink(fixtures.doesnotexist); } catch (err) {} + + +exports['list'] = function(beforeExit) { + var completed = false; beforeExit(function() { assert.ok(completed); }); + + MBTiles.list(fixtures.doesnotexist, function(err, list) { + assert.ok(err); + assert.equal(err.message, 'ENOENT, No such file or directory'); + + MBTiles.list(fixtures.doesnotexist, function(err, list) { + completed = true; + assert.ok(err); + assert.equal(err.message, 'ENOENT, No such file or directory'); + }); + }); +}; +