Skip to content

Commit

Permalink
Remove octal literals, pass in strict mode
Browse files Browse the repository at this point in the history
We all hate this.  But since this module is used everywhere, it's
a pain to not be able to use it in environments where strict mode
is desired, even if that desire is misguided.
  • Loading branch information
isaacs committed May 13, 2015
1 parent e51cb6c commit 48e67fc
Show file tree
Hide file tree
Showing 14 changed files with 53 additions and 27 deletions.
5 changes: 3 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
var path = require('path');
var fs = require('fs');
var _0777 = parseInt('0777', 8);

module.exports = mkdirP.mkdirp = mkdirP.mkdirP = mkdirP;

Expand All @@ -16,7 +17,7 @@ function mkdirP (p, opts, f, made) {
var xfs = opts.fs || fs;

if (mode === undefined) {
mode = 0777 & (~process.umask());
mode = _0777 & (~process.umask());
}
if (!made) made = null;

Expand Down Expand Up @@ -60,7 +61,7 @@ mkdirP.sync = function sync (p, opts, made) {
var xfs = opts.fs || fs;

if (mode === undefined) {
mode = 0777 & (~process.umask());
mode = _0777 & (~process.umask());
}
if (!made) made = null;

Expand Down
9 changes: 6 additions & 3 deletions test/chmod.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@ var mkdirp = require('../').mkdirp;
var path = require('path');
var fs = require('fs');
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);
var _0744 = parseInt('0744', 8);

var ps = [ '', 'tmp' ];

Expand All @@ -13,20 +16,20 @@ for (var i = 0; i < 25; i++) {
var file = ps.join('/');

test('chmod-pre', function (t) {
var mode = 0744
var mode = _0744
mkdirp(file, mode, function (er) {
t.ifError(er, 'should not error');
fs.stat(file, function (er, stat) {
t.ifError(er, 'should exist');
t.ok(stat && stat.isDirectory(), 'should be directory');
t.equal(stat && stat.mode & 0777, mode, 'should be 0744');
t.equal(stat && stat.mode & _0777, mode, 'should be 0744');
t.end();
});
});
});

test('chmod', function (t) {
var mode = 0755
var mode = _0755
mkdirp(file, mode, function (er) {
t.ifError(er, 'should not error');
fs.stat(file, function (er, stat) {
Expand Down
3 changes: 2 additions & 1 deletion test/clobber.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ var mkdirp = require('../').mkdirp;
var path = require('path');
var fs = require('fs');
var test = require('tap').test;
var _0755 = parseInt('0755', 8);

var ps = [ '', 'tmp' ];

Expand Down Expand Up @@ -29,7 +30,7 @@ test('clobber-pre', function (t) {

test('clobber', function (t) {
t.plan(2);
mkdirp(file, 0755, function (err) {
mkdirp(file, _0755, function (err) {
t.ok(err);
t.equal(err.code, 'ENOTDIR');
t.end();
Expand Down
6 changes: 4 additions & 2 deletions test/mkdirp.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('woo', function (t) {
t.plan(5);
Expand All @@ -12,13 +14,13 @@ test('woo', function (t) {

var file = '/tmp/' + [x,y,z].join('/');

mkdirp(file, 0755, function (err) {
mkdirp(file, _0755, function (err) {
t.ifError(err);
exists(file, function (ex) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
})
})
Expand Down
6 changes: 4 additions & 2 deletions test/opts_fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ var mkdirp = require('../');
var path = require('path');
var test = require('tap').test;
var mockfs = require('mock-fs');
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('opts.fs', function (t) {
t.plan(5);
Expand All @@ -13,13 +15,13 @@ test('opts.fs', function (t) {
var file = '/beep/boop/' + [x,y,z].join('/');
var xfs = mockfs.fs();

mkdirp(file, { fs: xfs, mode: 0755 }, function (err) {
mkdirp(file, { fs: xfs, mode: _0755 }, function (err) {
t.ifError(err);
xfs.exists(file, function (ex) {
t.ok(ex, 'created file');
xfs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
});
});
Expand Down
6 changes: 4 additions & 2 deletions test/opts_fs_sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ var mkdirp = require('../');
var path = require('path');
var test = require('tap').test;
var mockfs = require('mock-fs');
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('opts.fs sync', function (t) {
t.plan(4);
Expand All @@ -13,12 +15,12 @@ test('opts.fs sync', function (t) {
var file = '/beep/boop/' + [x,y,z].join('/');
var xfs = mockfs.fs();

mkdirp.sync(file, { fs: xfs, mode: 0755 });
mkdirp.sync(file, { fs: xfs, mode: _0755 });
xfs.exists(file, function (ex) {
t.ok(ex, 'created file');
xfs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
});
});
Expand Down
8 changes: 5 additions & 3 deletions test/perm.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,28 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('async perm', function (t) {
t.plan(5);
var file = '/tmp/' + (Math.random() * (1<<30)).toString(16);

mkdirp(file, 0755, function (err) {
mkdirp(file, _0755, function (err) {
t.ifError(err);
exists(file, function (ex) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
})
})
});
});

test('async root perm', function (t) {
mkdirp('/tmp', 0755, function (err) {
mkdirp('/tmp', _0755, function (err) {
if (err) t.fail(err);
t.end();
});
Expand Down
8 changes: 5 additions & 3 deletions test/perm_sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,19 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('sync perm', function (t) {
t.plan(4);
var file = '/tmp/' + (Math.random() * (1<<30)).toString(16) + '.json';

mkdirp.sync(file, 0755);
mkdirp.sync(file, _0755);
exists(file, function (ex) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
});
});
Expand All @@ -23,7 +25,7 @@ test('sync root perm', function (t) {
t.plan(3);

var file = '/tmp';
mkdirp.sync(file, 0755);
mkdirp.sync(file, _0755);
exists(file, function (ex) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
Expand Down
6 changes: 4 additions & 2 deletions test/race.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('race', function (t) {
t.plan(10);
Expand All @@ -20,13 +22,13 @@ test('race', function (t) {
mk(file);

function mk (file, cb) {
mkdirp(file, 0755, function (err) {
mkdirp(file, _0755, function (err) {
t.ifError(err);
exists(file, function (ex) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
});
})
Expand Down
6 changes: 4 additions & 2 deletions test/rel.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('rel', function (t) {
t.plan(5);
Expand All @@ -15,14 +17,14 @@ test('rel', function (t) {

var file = [x,y,z].join('/');

mkdirp(file, 0755, function (err) {
mkdirp(file, _0755, function (err) {
t.ifError(err);
exists(file, function (ex) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
process.chdir(cwd);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
})
})
Expand Down
3 changes: 2 additions & 1 deletion test/root.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,13 @@ var mkdirp = require('../');
var path = require('path');
var fs = require('fs');
var test = require('tap').test;
var _0755 = parseInt('0755', 8);

test('root', function (t) {
// '/' on unix, 'c:/' on windows.
var file = path.resolve('/');

mkdirp(file, 0755, function (err) {
mkdirp(file, _0755, function (err) {
if (err) throw err
fs.stat(file, function (er, stat) {
if (er) throw er
Expand Down
6 changes: 4 additions & 2 deletions test/sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('sync', function (t) {
t.plan(4);
Expand All @@ -13,7 +15,7 @@ test('sync', function (t) {
var file = '/tmp/' + [x,y,z].join('/');

try {
mkdirp.sync(file, 0755);
mkdirp.sync(file, _0755);
} catch (err) {
t.fail(err);
return t.end();
Expand All @@ -23,7 +25,7 @@ test('sync', function (t) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0755);
t.equal(stat.mode & _0777, _0755);
t.ok(stat.isDirectory(), 'target not a directory');
});
});
Expand Down
4 changes: 3 additions & 1 deletion test/umask.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('implicit mode from umask', function (t) {
t.plan(5);
Expand All @@ -18,7 +20,7 @@ test('implicit mode from umask', function (t) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, 0777 & (~process.umask()));
t.equal(stat.mode & _0777, _0777 & (~process.umask()));
t.ok(stat.isDirectory(), 'target not a directory');
});
})
Expand Down
4 changes: 3 additions & 1 deletion test/umask_sync.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var path = require('path');
var fs = require('fs');
var exists = fs.exists || path.exists;
var test = require('tap').test;
var _0777 = parseInt('0777', 8);
var _0755 = parseInt('0755', 8);

test('umask sync modes', function (t) {
t.plan(4);
Expand All @@ -23,7 +25,7 @@ test('umask sync modes', function (t) {
t.ok(ex, 'file created');
fs.stat(file, function (err, stat) {
t.ifError(err);
t.equal(stat.mode & 0777, (0777 & (~process.umask())));
t.equal(stat.mode & _0777, (_0777 & (~process.umask())));
t.ok(stat.isDirectory(), 'target not a directory');
});
});
Expand Down

0 comments on commit 48e67fc

Please sign in to comment.