1 var assert = require('assert'),
2 path = require('path'),
3 rimraf = require('rimraf'),
4 vows = require('vows'),
5 readDirFiles = require('read-dir-files'),
6 ncp = require('../').ncp;
8 var fixtures = path.join(__dirname, 'fixtures'),
9 src = path.join(fixtures, 'src'),
10 out = path.join(fixtures, 'out');
12 vows.describe('ncp').addBatch({
13 'When copying a directory of files': {
15 var cb = this.callback;
16 rimraf(out, function () {
20 'files should be copied': {
22 var cb = this.callback;
24 readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
25 readDirFiles(out, 'utf8', function (outErr, outFiles) {
26 cb(outErr, srcFiles, outFiles);
30 'and the destination should match the source': function (err, srcFiles, outFiles) {
32 assert.deepEqual(srcFiles, outFiles);
37 'When copying files using filter': {
39 var cb = this.callback;
40 var filter = function(name) {
41 return name.substr(name.length - 1) != 'a'
43 rimraf(out, function () {
44 ncp(src, out, {filter: filter}, cb);
47 'it should copy files': {
49 var cb = this.callback;
51 readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
52 function filter(files) {
53 for (var fileName in files) {
54 var curFile = files[fileName];
55 if (curFile instanceof Object)
56 return filter(curFile);
57 if (fileName.substr(fileName.length - 1) == 'a')
58 delete files[fileName];
62 readDirFiles(out, 'utf8', function (outErr, outFiles) {
63 cb(outErr, srcFiles, outFiles);
67 'and destination files should match source files that pass filter': function (err, srcFiles, outFiles) {
69 assert.deepEqual(srcFiles, outFiles);
74 'When copying files using transform': {
75 'it should pass file descriptors along to transform functions': function() {
77 transform: function(read,write,file) {
78 assert.notEqual(file.name, undefined);
79 assert.strictEqual(typeof file.mode,'number');