gentelella/vendors/update/test/app.src.js

296 lines
8.8 KiB
JavaScript

'use strict';
var App = require('..');
var assert = require('assert');
var should = require('should');
var join = require('path').join;
var app;
describe('src()', function() {
beforeEach(function() {
app = new App();
});
it('should return a stream', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'));
assert(stream);
assert.equal(typeof stream.on, 'function');
assert.equal(typeof stream.pipe, 'function');
done();
});
it('should return an input stream from a flat glob', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'));
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
String(file.contents).should.equal('Hello world!');
});
stream.on('end', function() {
done();
});
});
it('should return an input stream for multiple globs', function(done) {
var globArray = [
join(__dirname, './fixtures/generic/run.dmc'),
join(__dirname, './fixtures/generic/test.dmc')
];
var stream = app.src(globArray);
var files = [];
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
files.push(file);
});
stream.on('end', function() {
files.length.should.equal(2);
files[0].path.should.equal(globArray[0]);
files[1].path.should.equal(globArray[1]);
done();
});
});
it('should return an input stream for multiple globs with negation', function(done) {
var expectedPath = join(__dirname, './fixtures/generic/run.dmc');
var globArray = [
join(__dirname, './fixtures/generic/*.dmc'),
'!' + join(__dirname, './fixtures/generic/test.dmc'),
];
var stream = app.src(globArray);
var files = [];
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
files.push(file);
});
stream.on('end', function() {
files.length.should.equal(1);
files[0].path.should.equal(expectedPath);
done();
});
});
it('should return an input stream with no contents when read is false', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'), {read: false});
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.not.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
});
stream.on('end', function() {
done();
});
});
it('should return an input stream with contents as stream when buffer is false', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'), {buffer: false});
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
var buf = '';
file.contents.on('data', function(d) {
buf += d;
});
file.contents.on('end', function() {
buf.should.equal('Hello world!');
done();
});
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
});
});
it('should return an input stream from a deep glob', function(done) {
var stream = app.src(join(__dirname, './fixtures/**/*.jade'));
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test/run.jade'));
String(file.contents).should.equal('test template');
});
stream.on('end', function() {
done();
});
});
it('should return an input stream from a deeper glob', function(done) {
var stream = app.src(join(__dirname, './fixtures/**/*.dmc'));
var a = 0;
stream.on('error', done);
stream.on('data', function() {
++a;
});
stream.on('end', function() {
a.should.equal(2);
done();
});
});
it('should return a file stream from a flat path', function(done) {
var a = 0;
var stream = app.src(join(__dirname, './fixtures/test.coffee'));
stream.on('error', done);
stream.on('data', function(file) {
++a;
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
String(file.contents).should.equal('Hello world!');
});
stream.on('end', function() {
a.should.equal(1);
done();
});
});
it('should return a stream', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'));
should.exist(stream);
should.exist(stream.on);
done();
});
it('should return an input stream from a flat glob', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'));
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
String(file.contents).should.equal('Hello world!');
});
stream.on('end', function() {
done();
});
});
it('should return an input stream for multiple globs', function(done) {
var globArray = [
join(__dirname, './fixtures/generic/run.dmc'),
join(__dirname, './fixtures/generic/test.dmc')
];
var stream = app.src(globArray);
var files = [];
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
files.push(file);
});
stream.on('end', function() {
files.length.should.equal(2);
files[0].path.should.equal(globArray[0]);
files[1].path.should.equal(globArray[1]);
done();
});
});
it('should return an input stream for multiple globs, with negation', function(done) {
var expectedPath = join(__dirname, './fixtures/generic/run.dmc');
var globArray = [
join(__dirname, './fixtures/generic/*.dmc'),
'!' + join(__dirname, './fixtures/generic/test.dmc'),
];
var stream = app.src(globArray);
var files = [];
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
files.push(file);
});
stream.on('end', function() {
files.length.should.equal(1);
files[0].path.should.equal(expectedPath);
done();
});
});
it('should return an input stream with no contents when read is false', function(done) {
var stream = app.src(join(__dirname, './fixtures/*.coffee'), {read: false});
stream.on('error', done);
stream.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.not.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
});
stream.on('end', function() {
done();
});
});
it.skip('should throw an error when buffer is false', function(done) {
app.src(join(__dirname, './fixtures/*.coffee'), {buffer: false})
.on('error', function() {
done();
})
.on('data', function() {
done(new Error('should have thrown an error'));
});
});
it('should return an input stream from a deep glob', function(done) {
app.src(join(__dirname, './fixtures/**/*.jade'))
.on('error', done)
.on('data', function(file) {
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test/run.jade'));
String(file.contents).should.equal('test template');
})
.on('end', function() {
done();
});
});
it('should return an input stream from a deeper glob', function(done) {
var stream = app.src(join(__dirname, './fixtures/**/*.dmc'));
var a = 0;
stream.on('error', done);
stream.on('data', function() {
++a;
});
stream.on('end', function() {
a.should.equal(2);
done();
});
});
it('should return a file stream from a flat path', function(done) {
var a = 0;
var stream = app.src(join(__dirname, './fixtures/test.coffee'));
stream.on('error', done);
stream.on('data', function(file) {
++a;
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path, '').should.equal(join(__dirname, './fixtures/test.coffee'));
String(file.contents).should.equal('Hello world!');
});
stream.on('end', function() {
a.should.equal(1);
done();
});
});
});