Skip to content

Commit dfb42c7

Browse files
committed
Correct sync behavior. Errors are thrown, not returned
1 parent 74aa4d3 commit dfb42c7

File tree

3 files changed

+30
-22
lines changed

3 files changed

+30
-22
lines changed

index.js

+6-8
Original file line numberDiff line numberDiff line change
@@ -46,28 +46,26 @@ mkdirP.sync = function sync (p, mode) {
4646

4747
if (typeof mode === 'string') mode = parseInt(mode, 8);
4848
p = path.resolve(p);
49-
49+
5050
try {
51-
fs.mkdirSync(p, mode)
51+
fs.mkdirSync(p, mode);
5252
}
5353
catch (err0) {
5454
switch (err0.code) {
5555
case 'ENOENT' :
56-
var err1 = sync(path.dirname(p), mode)
57-
if (err1) throw err1;
58-
else return sync(p, mode);
56+
sync(path.dirname(p), mode);
57+
sync(p, mode);
5958
break;
60-
59+
6160
case 'EEXIST' :
6261
var stat;
6362
try {
6463
stat = fs.statSync(p);
6564
}
6665
catch (err1) {
67-
throw err0
66+
throw err0;
6867
}
6968
if (!stat.isDirectory()) throw err0;
70-
else return null;
7169
break;
7270
default :
7371
throw err0

test/sync.js

+12-7
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ test('sync', function (t) {
88
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
99
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
1010
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
11-
11+
1212
var file = '/tmp/' + [x,y,z].join('/');
13-
14-
var err = mkdirp.sync(file, 0755);
15-
if (err) t.fail(err);
16-
else path.exists(file, function (ex) {
13+
14+
try {
15+
mkdirp.sync(file, 0755);
16+
} catch (err) {
17+
t.fail(err);
18+
return t.end();
19+
}
20+
21+
path.exists(file, function (ex) {
1722
if (!ex) t.fail('file not created')
1823
else fs.stat(file, function (err, stat) {
1924
if (err) t.fail(err)
@@ -22,6 +27,6 @@ test('sync', function (t) {
2227
t.ok(stat.isDirectory(), 'target not a directory');
2328
t.end();
2429
}
25-
})
26-
})
30+
});
31+
});
2732
});

test/umask_sync.js

+12-7
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,17 @@ test('umask sync modes', function (t) {
88
var x = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
99
var y = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
1010
var z = Math.floor(Math.random() * Math.pow(16,4)).toString(16);
11-
11+
1212
var file = '/tmp/' + [x,y,z].join('/');
13-
14-
var err = mkdirp.sync(file);
15-
if (err) t.fail(err);
16-
else path.exists(file, function (ex) {
13+
14+
try {
15+
mkdirp.sync(file, 0755);
16+
} catch (err) {
17+
t.fail(err);
18+
return t.end();
19+
}
20+
21+
path.exists(file, function (ex) {
1722
if (!ex) t.fail('file not created')
1823
else fs.stat(file, function (err, stat) {
1924
if (err) t.fail(err)
@@ -22,6 +27,6 @@ test('umask sync modes', function (t) {
2227
t.ok(stat.isDirectory(), 'target not a directory');
2328
t.end();
2429
}
25-
})
26-
})
30+
});
31+
});
2732
});

0 commit comments

Comments
 (0)