blob: 676c9fa705ced66bdcc94fa16f768efc2b27e323 [file] [log] [blame]
var testCase = require('nodeunit').testCase;
var fs = require('fs');
var wrench = require('../lib/wrench');
var path = require('path');
function checkResultHidden(test, files) {
var check = [
'.hidden',
'.hidden.txt',
'bar.txt',
'foo',
path.join('.hidden', 'dolor.md'),
path.join('foo', 'bar'),
path.join('foo', 'dolor.md'),
path.join('foo', 'lorem.txt'),
path.join('foo', 'bar', 'ipsum.js')
];
test.deepEqual(files, check);
}
function checkResultShown(test, files) {
var check = [
'bar.txt',
'foo',
path.join('foo', 'bar'),
path.join('foo', 'dolor.md'),
path.join('foo', 'lorem.txt'),
path.join('foo', 'bar', 'ipsum.js')
];
test.deepEqual(files, check);
}
function checkResultInflate(test, files) {
var check = [
'.hidden',
'bar.txt',
'test',
path.join('.hidden', 'dolor.md')
];
test.deepEqual(files, check);
test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/.hidden')).isSymbolicLink(), false);
test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/bar.txt')).isSymbolicLink(), false);
}
function checkResultDontInflate(test, files) {
var check = [
'.hidden',
'bar.txt',
'test',
path.join('.hidden', 'dolor.md')
];
test.deepEqual(files, check);
test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/.hidden')).isSymbolicLink(), true);
test.deepEqual(fs.lstatSync(path.join(__dirname, 'testdir/bar.txt')).isSymbolicLink(), true);
}
function checkResultPreserveFiles(test, files) {
checkResultHidden(test, files);
var contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', '.hidden.txt')), "utf8");
test.deepEqual(contents, 'hidden file');
contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'bar.txt')), "utf8");
test.deepEqual(contents, 'shown file');
}
function checkResultOverwriteFiles(test, files) {
checkResultHidden(test, files);
var contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', '.hidden.txt')), "utf8");
test.deepEqual(contents, 'just some text for .hidden.txt');
contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'bar.txt')), "utf8");
test.deepEqual(contents, 'just some text for bar.txt');
}
module.exports = testCase({
test_copyDirSyncRecursiveWithoutOptions: function(test) {
var dir = path.join(__dirname, 'shown');
var testdir = path.join(__dirname, 'testdir');
wrench.copyDirSyncRecursive(dir, testdir);
wrench.rmdirSyncRecursive(testdir);
test.done();
},
test_copyDirSyncRecursiveHidden: function(test) {
var dir = path.join(__dirname, 'shown');
var testdir = path.join(__dirname, 'testdir');
test.ok(fs.existsSync(dir), 'Folders should exist');
wrench.mkdirSyncRecursive(testdir, 0777);
wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false });
var files = wrench.readdirSyncRecursive(testdir);
checkResultHidden(test, files);
wrench.rmdirSyncRecursive(testdir);
test.done();
},
test_copyDirSyncRecursiveShown: function(test) {
var dir = path.join(__dirname, 'shown');
var testdir = path.join(__dirname, 'testdir');
test.ok(fs.existsSync(dir), 'Folders should exist');
wrench.mkdirSyncRecursive(testdir, 0777);
wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: true });
var files = wrench.readdirSyncRecursive(testdir);
checkResultShown(test, files);
wrench.rmdirSyncRecursive(testdir);
test.done();
},
test_copyDirSyncRecursiveInflate: function(test) {
var dir = path.join(__dirname, 'withsymlinks');
var testdir = path.join(__dirname, 'testdir');
test.ok(fs.existsSync(dir), 'Folders should exist');
wrench.mkdirSyncRecursive(testdir, 0777);
wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false, inflateSymlinks: true });
var files = wrench.readdirSyncRecursive(testdir);
checkResultInflate(test, files);
wrench.rmdirSyncRecursive(testdir);
test.done();
},
test_copyDirSyncRecursiveDontInflate: function(test) {
var dir = path.join(__dirname, 'withsymlinks');
var testdir = path.join(__dirname, 'testdir');
test.ok(fs.existsSync(dir), 'Folders should exist');
wrench.mkdirSyncRecursive(testdir, 0777);
wrench.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false, inflateSymlinks: false });
var files = wrench.readdirSyncRecursive(testdir);
checkResultDontInflate(test, files);
wrench.rmdirSyncRecursive(testdir);
test.done();
},
test_copyDirSyncRecursivePreserveFiles: function(test) {
var dir = path.join(__dirname, 'shown'),
testdir1 = path.join(__dirname, 'testdir1'),
testdir2 = path.join(__dirname, 'testdir2');
test.ok(fs.existsSync(dir), 'Folders should exist');
wrench.mkdirSyncRecursive(testdir1, 0777);
wrench.copyDirSyncRecursive(dir, testdir1, { excludeHiddenUnix: false });
wrench.copyDirSyncRecursive(dir, testdir2, { excludeHiddenUnix: false });
fs.writeFileSync(path.join(testdir1, ".hidden.txt"), 'just some text for .hidden.txt');
fs.writeFileSync(path.join(testdir1, "bar.txt"), 'just some text for bar.txt');
wrench.copyDirSyncRecursive(testdir1, testdir2, { preserve: true, excludeHiddenUnix: false, preserveFiles: true });
var files = wrench.readdirSyncRecursive(testdir2);
checkResultPreserveFiles(test, files);
wrench.rmdirSyncRecursive(testdir1);
wrench.rmdirSyncRecursive(testdir2);
test.done();
},
test_copyDirSyncRecursiveOverwriteFiles: function(test) {
var dir = path.join(__dirname, 'shown'),
testdir1 = path.join(__dirname, 'testdir1'),
testdir2 = path.join(__dirname, 'testdir2');
test.ok(fs.existsSync(dir), 'Folders should exist');
wrench.mkdirSyncRecursive(testdir1, 0777);
wrench.copyDirSyncRecursive(dir, testdir1, { excludeHiddenUnix: false });
wrench.copyDirSyncRecursive(dir, testdir2, { excludeHiddenUnix: false });
fs.writeFileSync(path.join(testdir1, ".hidden.txt"), 'just some text for .hidden.txt');
fs.writeFileSync(path.join(testdir1, "bar.txt"), 'just some text for bar.txt');
wrench.copyDirSyncRecursive(testdir1, testdir2, { preserve: true, excludeHiddenUnix: false, preserveFiles: false });
var files = wrench.readdirSyncRecursive(testdir2);
checkResultOverwriteFiles(test, files);
wrench.rmdirSyncRecursive(testdir1);
wrench.rmdirSyncRecursive(testdir2);
test.done();
}
});
// vim: et ts=4 sw=4