Skip to content
This repository has been archived by the owner on Jun 19, 2019. It is now read-only.

Commit

Permalink
Updating test for rmdirSyncRecursive to check for files with alternat…
Browse files Browse the repository at this point in the history
…ive permissions being removed properly.
  • Loading branch information
seanmwalker committed Jan 17, 2014
1 parent 793c61e commit df61c70
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 2 deletions.
5 changes: 5 additions & 0 deletions lib/wrench.js
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,8 @@ exports.rmdirSyncRecursive = function(path, failSilent) {
try {
files = fs.readdirSync(path);
} catch (err) {
console.log('Error "' + err.message + '"\n');

if(failSilent) return;
throw new Error(err.message);
}
Expand All @@ -150,20 +152,23 @@ exports.rmdirSyncRecursive = function(path, failSilent) {
} else if(currFile.isSymbolicLink()) {
// Unlink symlinks
if (isWindows) {
console.log('Remove file "' + file + '"\n');
fs.chmodSync(file, 666) // Windows needs this unless joyent/node#3006 is resolved..
}

fs.unlinkSync(file);
} else {
// Assume it's a file - perhaps a try/catch belongs here?
if (isWindows) {
console.log('Remove file "' + file + '"\n');
fs.chmodSync(file, 666) // Windows needs this unless joyent/node#3006 is resolved..
}

fs.unlinkSync(file);
}
}

console.log('Remove dir "' + path + '"\n');
/* Now that we know everything in the sub-tree has been deleted, we can delete the main
directory. Huzzah for the shopkeep. */
return fs.rmdirSync(path);
Expand Down
56 changes: 54 additions & 2 deletions tests/rmdirSyncRecursive.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,70 @@ var path = require('path');

module.exports = testCase({
test_rmdirSyncRecursive: function(test) {
var dir = __dirname + '/_tmp/foo/bar';
var dir = __dirname + '/_tmp2/foo/bar';

wrench.mkdirSyncRecursive(dir, 0777);
wrench.mkdirSyncRecursive(dir, '777');

var f1Path = path.join(dir, 'test1.txt');
var f2Path = path.join(path.dirname(dir), 'test2.txt');
var f3Path = path.join(path.dirname(path.dirname(dir)), 'test3.txt');

fs.writeFileSync(f1Path, 'foo bar baz');
fs.writeFileSync(f2Path, 'foo bar baz');
fs.writeFileSync(f3Path, 'foo bar baz');

fs.chmodSync(f1Path, '777');
fs.chmodSync(f2Path, '777');
fs.chmodSync(f3Path, '777');

test.equals(fs.existsSync(dir), true, 'Dir should exist - mkdirSyncRecursive not working?');
test.equals(fs.existsSync(f1Path), true, 'File should exist');
test.equals(fs.existsSync(f2Path), true, 'File should exist');
test.equals(fs.existsSync(f3Path), true, 'File should exist');

wrench.rmdirSyncRecursive(dir);

test.equals(fs.existsSync(dir), false, 'Dir should not exist now...');
test.equals(fs.existsSync(f1Path), false, 'File should not exist');
test.equals(fs.existsSync(f2Path), true, 'File should exist');
test.equals(fs.existsSync(f3Path), true, 'File should exist');

wrench.rmdirSyncRecursive(path.dirname(path.dirname(dir)));

test.done();
},

test_rmdirSyncRecursiveFromRoot: function(test) {
var dir = __dirname + '/_tmp3/foo/bar';

wrench.mkdirSyncRecursive(dir, '777');

var f1Path = path.join(dir, 'test1.txt');
var f2Path = path.join(path.dirname(dir), 'test2.txt');
var f3Path = path.join(path.dirname(path.dirname(dir)), 'test3.txt');

fs.writeFileSync(f1Path, 'foo bar baz');
fs.writeFileSync(f2Path, 'foo bar baz');
fs.writeFileSync(f3Path, 'foo bar baz');

fs.chmodSync(f1Path, '777');
fs.chmodSync(f2Path, '777');
fs.chmodSync(f3Path, '777');

test.equals(fs.existsSync(dir), true, 'Dir should exist - mkdirSyncRecursive not working?');
test.equals(fs.existsSync(f1Path), true, 'File should exist');
test.equals(fs.existsSync(f2Path), true, 'File should exist');
test.equals(fs.existsSync(f3Path), true, 'File should exist');

wrench.rmdirSyncRecursive(path.dirname(path.dirname(dir)));

test.equals(fs.existsSync(dir), false, 'Dir should not exist now...');
test.equals(fs.existsSync(f1Path), false, 'File should not exist');
test.equals(fs.existsSync(f2Path), false, 'File should not exist');
test.equals(fs.existsSync(f3Path), false, 'File should not exist');

test.done();
}
});

// vim: et ts=4 sw=4

0 comments on commit df61c70

Please sign in to comment.