fix hang after previous request failed

This commit is contained in:
Konstantin Käfer
2011-09-20 22:45:23 +02:00
parent 556fde0a20
commit fb30fb0ee5
2 changed files with 34 additions and 7 deletions

View File

@@ -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');
});

29
test/list.test.js Normal file
View File

@@ -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');
});
});
};