Skip to content

Commit 3325ec1

Browse files
stefanpennerljharb
authored andcommitted
[Fix] resolve.sync should re-throw non `ENOENT errors.
Fixes #79.
1 parent 7e98547 commit 3325ec1

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

lib/sync.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ module.exports = function (x, opts) {
88
if (!opts) opts = {};
99
var isFile = opts.isFile || function (file) {
1010
try { var stat = fs.statSync(file) }
11-
catch (err) { if (err && err.code === 'ENOENT') return false }
11+
catch (err) {
12+
if (err && err.code === 'ENOENT') return false;
13+
throw err;
14+
}
1215
return stat.isFile() || stat.isFIFO();
1316
};
1417
var readFileSync = opts.readFileSync || fs.readFileSync;

test/resolver_sync.js

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,3 +178,29 @@ test('#25: node modules with the same name as node stdlib modules', function (t)
178178

179179
t.end()
180180
});
181+
182+
function stubStatSync(fn) {
183+
var fs = require('fs')
184+
var statSync = fs.statSync;
185+
try {
186+
fs.statSync = function () {
187+
throw new EvalError('Unknown Error');
188+
};
189+
return fn();
190+
} finally {
191+
fs.statSync = statSync;
192+
}
193+
}
194+
195+
test('#79 - re-throw non ENOENT errors from stat', function (t) {
196+
var dir = __dirname + '/resolver';
197+
198+
stubStatSync(function () {
199+
t.throws(function () {
200+
resolve.sync('foo', { basedir : dir });
201+
}, /Unknown Error/);
202+
})
203+
204+
t.end()
205+
});
206+

0 commit comments

Comments
 (0)