Skip to content

Commit

Permalink
more tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Contra committed Jan 16, 2014
1 parent ed50c02 commit 1178422
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 21 deletions.
6 changes: 3 additions & 3 deletions lib/dest/writeStream.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ var fs = require('graceful-fs');
module.exports = function(writePath, file, cb) {
var outStream = fs.createWriteStream(writePath);
file.contents.once('error', cb);
outStream.once('close', function(){
cb();
});
outStream.once('finish', cb);

file.contents.pipe(outStream);
return outStream;
};
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"rimraf": "~2.2.5",
"jshint": "~2.4.1",
"buffer-equal": "0.0.0",
"event-stream": "~3.1.0"
"through2": "~0.4.0"
},
"scripts": {
"test": "mocha --reporter spec && jshint",
Expand Down
80 changes: 75 additions & 5 deletions test/dest.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ var fs = require('graceful-fs');
var rimraf = require('rimraf');

var bufEqual = require('buffer-equal');
var es = require('event-stream');
var through = require('through2');
var File = require('vinyl');

var should = require('should');
Expand All @@ -15,6 +15,13 @@ var wipeOut = function(cb) {
rimraf(path.join(__dirname, "./out-fixtures/"), cb);
};

var dataWrap = function(fn) {
return function(data, enc, cb) {
fn(data);
cb();
};
};

describe('dest stream', function() {
beforeEach(wipeOut);
afterEach(wipeOut);
Expand All @@ -38,7 +45,7 @@ describe('dest stream', function() {
var stream = vfs.dest("./out-fixtures/", {cwd: __dirname});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
stream.end();
Expand All @@ -63,12 +70,39 @@ describe('dest stream', function() {
var stream = vfs.dest(path.join(__dirname, "./out-fixtures/"));

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
stream.end();
});

it('should not write null files', function(done) {
var expectedPath = path.join(__dirname, "./out-fixtures/test.coffee");
var inputPath = path.join(__dirname, "./fixtures/test.coffee");
var inputBase = path.join(__dirname, "./fixtures/");

var expectedFile = new File({
base: inputBase,
cwd: __dirname,
path: inputPath,
contents: null
});

var onEnd = function(){
buffered.length.should.equal(1);
buffered[0].should.equal(expectedFile);
fs.existsSync(expectedPath).should.equal(false);
done();
};

var stream = vfs.dest("./out-fixtures/", {cwd: __dirname});

var buffered = [];
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
stream.end();
});

it('should write buffer files to the right folder', function(done) {
var expectedPath = path.join(__dirname, "./out-fixtures/test.coffee");
Expand All @@ -86,16 +120,52 @@ describe('dest stream', function() {
var onEnd = function(){
buffered.length.should.equal(1);
buffered[0].should.equal(expectedFile);
fs.existsSync(expectedPath).should.equal(true);
bufEqual(fs.readFileSync(expectedPath), expectedContents).should.equal(true);
done();
};

var stream = vfs.dest("./out-fixtures/", {cwd: __dirname});

var buffered = [];
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
stream.end();
});

it('should write streaming files to the right folder', function(done) {
var expectedPath = path.join(__dirname, "./out-fixtures/test.coffee");
var inputPath = path.join(__dirname, "./fixtures/test.coffee");
var inputBase = path.join(__dirname, "./fixtures/");
var expectedContents = fs.readFileSync(inputPath);

var contentStream = through.obj();
var expectedFile = new File({
base: inputBase,
cwd: __dirname,
path: inputPath,
contents: contentStream
});

var onEnd = function(){
buffered.length.should.equal(1);
buffered[0].should.equal(expectedFile);
fs.existsSync(expectedPath).should.equal(true);
bufEqual(fs.readFileSync(expectedPath), expectedContents).should.equal(true);
done();
};

var stream = vfs.dest("./out-fixtures/", {cwd: __dirname});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
setTimeout(function(){
contentStream.write(expectedContents);
contentStream.end();
}, 100);
stream.end();
});

Expand Down Expand Up @@ -127,7 +197,7 @@ describe('dest stream', function() {
var stream = vfs.dest("./out-fixtures/", {cwd: __dirname});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
stream.end();
Expand Down
36 changes: 24 additions & 12 deletions test/src.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,19 @@ var path = require('path');
var fs = require('graceful-fs');

var bufEqual = require('buffer-equal');
var es = require('event-stream');
var through = require('through2');
var File = require('vinyl');

var should = require('should');
require('mocha');

var dataWrap = function(fn) {
return function(data, enc, cb) {
fn(data);
cb();
};
};

describe('source stream', function() {

it('should pass through writes', function(done) {
Expand All @@ -33,7 +40,7 @@ describe('source stream', function() {
var stream = vfs.src("./fixtures/nothing.coffee");

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
stream.end();
Expand All @@ -55,7 +62,7 @@ describe('source stream', function() {
var stream = vfs.src("./fixtures/*.coffee", {cwd: __dirname});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
});

Expand All @@ -73,11 +80,11 @@ describe('source stream', function() {
var stream = vfs.src("./fixtures/wow/", {cwd: __dirname});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
});

it('should glob a file with read: false', function(done) {
it('should glob a file with with no contents', function(done) {
var expectedPath = path.join(__dirname, "./fixtures/test.coffee");
var expectedContent = fs.readFileSync(expectedPath);

Expand All @@ -92,11 +99,11 @@ describe('source stream', function() {
var stream = vfs.src("./fixtures/*.coffee", {cwd: __dirname, read: false});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
});

it('should glob a file with buffer: false', function(done) {
it('should glob a file with streaming contents', function(done) {
var expectedPath = path.join(__dirname, "./fixtures/test.coffee");
var expectedContent = fs.readFileSync(expectedPath);

Expand All @@ -105,17 +112,22 @@ describe('source stream', function() {
should.exist(buffered[0].stat);
buffered[0].path.should.equal(expectedPath);
buffered[0].isStream().should.equal(true);
buffered[0].contents.pipe(es.wait(function(err, content){
should.not.exist(err);
bufEqual(Buffer(content), expectedContent);
done();

var contentBuffer = new Buffer([]);
var contentBufferStream = through(dataWrap(function(data){
contentBuffer = Buffer.concat([contentBuffer, data]);
}));
buffered[0].contents.pipe(contentBufferStream);
buffered[0].contents.once('end', function(){
bufEqual(contentBuffer, expectedContent);
done();
});
};

var stream = vfs.src("./fixtures/*.coffee", {cwd: __dirname, buffer: false});

var buffered = [];
bufferStream = es.through(buffered.push.bind(buffered), onEnd);
bufferStream = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
});

Expand Down

0 comments on commit 1178422

Please sign in to comment.