123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253 |
- 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 checkResultInflateAbsolute(test, files) {
- var check = [
- '.hidden',
- 'absolute-bar.txt',
- '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'); // Preserved Content
- contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'bar.txt')), "utf8");
- test.deepEqual(contents, 'shown file'); // Preserved Content
- contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'foo/lorem.txt')), "utf8");
- test.deepEqual(contents, 'Lorem ipsum, please preserve my content.'); // Preserved Content
- contents = fs.readFileSync(path.join(__dirname, path.join('testdir2', 'foo/dolor.md')), "utf8");
- test.deepEqual(contents, '#dolor sit amet'); // Copied Content
- }
- 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.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.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.copyDirSyncRecursive(dir, testdir, { excludeHiddenUnix: false, inflateSymlinks: true });
- var files = wrench.readdirSyncRecursive(testdir);
- checkResultInflate(test, files);
- wrench.rmdirSyncRecursive(testdir);
- test.done();
- },
- test_copyDirSyncRecursiveInflateAbsoluteSymlinks: function(test) {
- var dir = path.join(__dirname, 'withsymlinks');
- var testdir = path.join(__dirname, 'testdir');
- fs.symlinkSync(
- path.resolve(__dirname, 'shown/bar.txt'),
- path.join(dir, 'absolute-bar.txt')
- );
- wrench.mkdirSyncRecursive(testdir, 0777);
- wrench.copyDirSyncRecursive(dir, testdir, { forceDelete: true, excludeHiddenUnix: false, inflateSymlinks: true });
- var files = wrench.readdirSyncRecursive(testdir);
- checkResultInflateAbsolute(test, files);
- wrench.rmdirSyncRecursive(testdir);
- fs.unlinkSync(path.join(dir, 'absolute-bar.txt'));
- 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.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');
- fs.writeFileSync(path.join(testdir1, 'foo/lorem.txt'), 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. ');
- fs.writeFileSync(path.join(testdir1, 'foo/dolor.md'), '#dolor sit amet');
- wrench.rmdirSyncRecursive(path.join(testdir2, 'foo'));
- fs.mkdirSync(path.join(testdir2, 'foo'));
- fs.writeFileSync(path.join(testdir2, 'foo/lorem.txt'), 'Lorem ipsum, please preserve my content.');
- var err = wrench.copyDirSyncRecursive(testdir1, testdir2, { excludeHiddenUnix: false, preserveFiles: true });
- test.equal(err, undefined, 'Error should not be returned');
-
- 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, { forceDelete: 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
|