--- /dev/null
+var assert = require('assert'),
+ path = require('path'),
+ rimraf = require('rimraf'),
+ vows = require('vows'),
+ readDirFiles = require('read-dir-files'),
+ ncp = require('../').ncp;
+
+var fixtures = path.join(__dirname, 'fixtures'),
+ src = path.join(fixtures, 'src'),
+ out = path.join(fixtures, 'out');
+
+vows.describe('ncp').addBatch({
+ 'When copying a directory of files': {
+ topic: function () {
+ var cb = this.callback;
+ rimraf(out, function () {
+ ncp(src, out, cb);
+ });
+ },
+ 'files should be copied': {
+ topic: function () {
+ var cb = this.callback;
+
+ readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
+ readDirFiles(out, 'utf8', function (outErr, outFiles) {
+ cb(outErr, srcFiles, outFiles);
+ });
+ });
+ },
+ 'and the destination should match the source': function (err, srcFiles, outFiles) {
+ assert.isNull(err);
+ assert.deepEqual(srcFiles, outFiles);
+ }
+ }
+ }
+}).addBatch({
+ 'When copying files using filter': {
+ topic: function() {
+ var cb = this.callback;
+ var filter = function(name) {
+ return name.substr(name.length - 1) != 'a'
+ }
+ rimraf(out, function () {
+ ncp(src, out, {filter: filter}, cb);
+ });
+ },
+ 'it should copy files': {
+ topic: function () {
+ var cb = this.callback;
+
+ readDirFiles(src, 'utf8', function (srcErr, srcFiles) {
+ function filter(files) {
+ for (var fileName in files) {
+ var curFile = files[fileName];
+ if (curFile instanceof Object)
+ return filter(curFile);
+ if (fileName.substr(fileName.length - 1) == 'a')
+ delete files[fileName];
+ }
+ }
+ filter(srcFiles);
+ readDirFiles(out, 'utf8', function (outErr, outFiles) {
+ cb(outErr, srcFiles, outFiles);
+ });
+ });
+ },
+ 'and destination files should match source files that pass filter': function (err, srcFiles, outFiles) {
+ assert.isNull(err);
+ assert.deepEqual(srcFiles, outFiles);
+ }
+ }
+ }
+}).addBatch({
+ 'When copying files using transform': {
+ 'it should pass file descriptors along to transform functions': function() {
+ ncp(src, out, {
+ transform: function(read,write,file) {
+ assert.notEqual(file.name, undefined);
+ assert.strictEqual(typeof file.mode,'number');
+ read.pipe(write);
+ }
+ }, function(){});
+ }
+ }
+}).export(module);
+