Skip to content

Commit

Permalink
Update: Add & improve tons of tests
Browse files Browse the repository at this point in the history
  • Loading branch information
yocontra authored and phated committed Nov 27, 2017
1 parent 5466068 commit 590435a
Show file tree
Hide file tree
Showing 4 changed files with 188 additions and 16 deletions.
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
165 changes: 162 additions & 3 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,11 +15,43 @@ 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);

it('should pass through writes', function(done) {
it('should pass through writes with cwd', function(done) {
var expectedPath = path.join(__dirname, "./out-fixtures/test.coffee");

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

var onEnd = function(){
buffered.length.should.equal(1);
buffered[0].should.equal(expectedFile);
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 pass through writes with default cwd', function(done) {
var expectedPath = path.join(__dirname, "./out-fixtures/test.coffee");

var expectedFile = new File({
Expand All @@ -35,10 +67,137 @@ describe('dest stream', function() {
done();
};

var stream = vfs.dest(path.join(__dirname, "./out-fixtures/"));

var buffered = [];
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");
var inputPath = path.join(__dirname, "./fixtures/test.coffee");
var inputBase = path.join(__dirname, "./fixtures/");
var expectedContents = fs.readFileSync(inputPath);

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

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 = through.obj(dataWrap(buffered.push.bind(buffered)), onEnd);
stream.pipe(bufferStream);
stream.write(expectedFile);
setTimeout(function(){
contentStream.write(expectedContents);
contentStream.end();
}, 100);
stream.end();
});

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

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

var onEnd = function(){
buffered.length.should.equal(1);
buffered[0].should.equal(expectedFile);
fs.existsSync(expectedPath).should.equal(true);
fs.lstatSync(expectedPath).isDirectory().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);
stream.end();
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/wow/suchempty
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
suchempty
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 590435a

Please sign in to comment.