initial commit

This commit is contained in:
tmshv committed 2014-02-12 12:36:59 +04:00
commit d3fcd7f10c
3159 files changed
+349702

No files matched your search

+132
View File
@@ -0,0 +1,132 @@
'use strict';
var gulp = require('../');
var should = require('should');
var join = require('path').join;
var rimraf = require('rimraf');
var fs = require('graceful-fs');
require('mocha');
var outpath = join(__dirname, "./out-fixtures");
describe('gulp output stream', function() {
describe('dest()', function() {
beforeEach(rimraf.bind(null, outpath));
afterEach(rimraf.bind(null, outpath));
it('should return a stream', function(done) {
var stream = gulp.dest(join(__dirname, "./fixtures/"));
should.exist(stream);
should.exist(stream.on);
done();
});
it('should return a output stream that writes files', function(done) {
var instream = gulp.src(join(__dirname, "./fixtures/**/*.txt"));
var outstream = gulp.dest(outpath);
instream.pipe(outstream);
outstream.on('error', done);
outstream.on('data', function(file) {
// data should be re-emitted right
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path,'').should.equal(join(outpath, "./copy/example.txt"));
String(file.contents).should.equal("this is a test");
});
outstream.on('end', function() {
fs.readFile(join(outpath, "copy", "example.txt"), function(err, contents){
should.not.exist(err);
should.exist(contents);
String(contents).should.equal("this is a test");
done();
});
});
});
it('should return a output stream that does not write non-read files', function(done) {
var instream = gulp.src(join(__dirname, "./fixtures/**/*.txt"), {read:false});
var outstream = gulp.dest(outpath);
instream.pipe(outstream);
outstream.on('error', done);
outstream.on('data', function(file) {
// data should be re-emitted right
should.exist(file);
should.exist(file.path);
should.not.exist(file.contents);
join(file.path,'').should.equal(join(outpath, "./copy/example.txt"));
});
outstream.on('end', function() {
fs.readFile(join(outpath, "copy", "example.txt"), function(err, contents){
should.exist(err);
should.not.exist(contents);
done();
});
});
});
it('should return a output stream that writes streaming files', function(done) {
var instream = gulp.src(join(__dirname, "./fixtures/**/*.txt"), {buffer:false});
var outstream = instream.pipe(gulp.dest(outpath));
outstream.on('error', done);
outstream.on('data', function(file) {
// data should be re-emitted right
should.exist(file);
should.exist(file.path);
should.exist(file.contents);
join(file.path,'').should.equal(join(outpath, "./copy/example.txt"));
});
outstream.on('end', function() {
fs.readFile(join(outpath, "copy", "example.txt"), function(err, contents){
should.not.exist(err);
should.exist(contents);
String(contents).should.equal("this is a test");
done();
});
});
});
it('should return a output stream that writes streaming files into new directories', function(done) {
testWriteDir({}, done);
});
it('should return a output stream that writes streaming files into new directories (buffer: false)', function(done) {
testWriteDir({buffer: false}, done);
});
it('should return a output stream that writes streaming files into new directories (read: false)', function(done) {
testWriteDir({read: false}, done);
});
it('should return a output stream that writes streaming files into new directories (read: false, buffer: false)', function(done) {
testWriteDir({buffer: false, read: false}, done);
});
function testWriteDir(srcOptions, done) {
var instream = gulp.src(join(__dirname, "./fixtures/stuff"), srcOptions);
var outstream = instream.pipe(gulp.dest(outpath));
outstream.on('error', done);
outstream.on('data', function(file) {
// data should be re-emitted right
should.exist(file);
should.exist(file.path);
join(file.path,'').should.equal(join(outpath, "./stuff"));
});
outstream.on('end', function() {
fs.exists(join(outpath, "stuff"), function(exists) {
/* stinks that ok is an expression instead of a function call */
/* jshint expr: true */
should(exists).be.ok;
/* jshint expr: false */
done();
});
});
}
});
});
+1
View File
@@ -0,0 +1 @@
this is a test
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+1
View File
@@ -0,0 +1 @@
this is a test
+1
View File
@@ -0,0 +1 @@
test template
+174
View File
@@ -0,0 +1,174 @@
'use strict';
var gulp = require('../');
var should = require('should');
var join = require('path').join;
require('mocha');
describe('gulp input stream', function() {
describe('src()', function() {
it('should return a stream', function(done) {
var stream = gulp.src(join(__dirname, "./fixtures/*.coffee"));
should.exist(stream);
should.exist(stream.on);
done();
});
it('should return a input stream from a flat glob', function(done) {
var stream = gulp.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("this is a test");
});
stream.on('end', function() {
done();
});
});
it('should return a input stream for multiple globs', function(done) {
var globArray = [
join(__dirname, "./fixtures/stuff/run.dmc"),
join(__dirname, "./fixtures/stuff/test.dmc")
];
var stream = gulp.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 a input stream for multiple globs, with negation', function(done) {
var expectedPath = join(__dirname, "./fixtures/stuff/run.dmc");
var globArray = [
join(__dirname, "./fixtures/stuff/*.dmc"),
'!' + join(__dirname, "./fixtures/stuff/test.dmc"),
];
var stream = gulp.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 a input stream for multiple globs, with negation', function(done) {
var expectedPath = join(__dirname, "./fixtures/stuff/run.dmc");
var globArray = [
join(__dirname, "./fixtures/stuff/run.dmc"),
'!' + join(__dirname, "./fixtures/stuff/test.dmc"),
];
var stream = gulp.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 a input stream with no contents when read is false', function(done) {
var stream = gulp.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 a input stream with contents as stream when buffer is false', function(done) {
var stream = gulp.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("this is a test");
done();
});
join(file.path,'').should.equal(join(__dirname, "./fixtures/test.coffee"));
});
});
it('should return a input stream from a deep glob', function(done) {
var stream = gulp.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 a input stream from a deeper glob', function(done) {
var stream = gulp.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 = gulp.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("this is a test");
});
stream.on('end', function() {
a.should.equal(1);
done();
});
});
});
});
+43
View File
@@ -0,0 +1,43 @@
'use strict';
var taskTree = require('../lib/taskTree');
var should = require('should');
require('mocha');
describe('taskTree()', function() {
it('should form a tree properly', function(done){
should.exist(taskTree); // lol shutup jshint
var tasks = {
test: {
dep: ['abc', 'def']
},
abc: {
dep: ['def']
},
def: {
dep: []
}
};
var expectTree = {
nodes: [{
label: 'test',
nodes: ['abc', 'def']
}, {
label: 'abc',
nodes: ['def']
}, {
label: 'def',
nodes: []
}]
};
taskTree(tasks).should.eql(expectTree);
done();
});
});
+157
View File
@@ -0,0 +1,157 @@
'use strict';
var gulp = require('../');
var Q = require('q');
var should = require('should');
require('mocha');
describe('gulp tasks', function() {
describe('task()', function() {
it('should define a task', function(done) {
var fn;
fn = function() {};
gulp.task('test', fn);
should.exist(gulp.tasks.test);
gulp.tasks.test.fn.should.equal(fn);
gulp.reset();
done();
});
});
describe('run()', function() {
it('should run multiple tasks', function(done) {
var a, fn, fn2;
a = 0;
fn = function() {
this.should.equal(gulp);
++a;
};
fn2 = function() {
this.should.equal(gulp);
++a;
};
gulp.task('test', fn);
gulp.task('test2', fn2);
gulp.run('test', 'test2');
a.should.equal(2);
gulp.reset();
done();
});
it('should run all tasks when call run() multiple times', function(done) {
var a, fn, fn2;
a = 0;
fn = function() {
this.should.equal(gulp);
++a;
};
fn2 = function() {
this.should.equal(gulp);
++a;
};
gulp.task('test', fn);
gulp.task('test2', fn2);
gulp.run('test');
gulp.run('test2');
a.should.equal(2);
gulp.reset();
done();
});
it('should run all async promise tasks', function(done) {
var a, fn, fn2;
a = 0;
fn = function() {
var deferred = Q.defer();
setTimeout(function () {
++a;
deferred.resolve();
},1);
return deferred.promise;
};
fn2 = function() {
var deferred = Q.defer();
setTimeout(function () {
++a;
deferred.resolve();
},1);
return deferred.promise;
};
gulp.task('test', fn);
gulp.task('test2', fn2);
gulp.run('test');
gulp.run('test2', function () {
gulp.isRunning.should.equal(false);
a.should.equal(2);
gulp.reset();
done();
});
gulp.isRunning.should.equal(true);
});
it('should run all async callback tasks', function(done) {
var a, fn, fn2;
a = 0;
fn = function(cb) {
setTimeout(function () {
++a;
cb(null);
},1);
};
fn2 = function(cb) {
setTimeout(function () {
++a;
cb(null);
},1);
};
gulp.task('test', fn);
gulp.task('test2', fn2);
gulp.run('test');
gulp.run('test2', function () {
gulp.isRunning.should.equal(false);
a.should.equal(2);
gulp.reset();
done();
});
gulp.isRunning.should.equal(true);
});
it('should emit task_not_found and throw an error when task is not defined', function(done) {
gulp.on('task_not_found', function(err){
should.exist(err);
should.exist(err.task);
err.task.should.equal('test');
gulp.reset();
done();
});
try {
gulp.run('test');
} catch (err) {
should.exist(err);
}
});
it('should run task scoped to gulp', function(done) {
var a, fn;
a = 0;
fn = function() {
this.should.equal(gulp);
++a;
};
gulp.task('test', fn);
gulp.run('test');
a.should.equal(1);
gulp.isRunning.should.equal(false);
gulp.reset();
done();
});
it('should run default task scoped to gulp', function(done) {
var a, fn;
a = 0;
fn = function() {
this.should.equal(gulp);
++a;
};
gulp.task('default', fn);
gulp.run();
a.should.equal(1);
gulp.isRunning.should.equal(false);
gulp.reset();
done();
});
});
});
+111
View File
@@ -0,0 +1,111 @@
'use strict';
var gulp = require('../');
var fs = require('graceful-fs');
var rimraf = require('rimraf');
var mkdirp = require('mkdirp');
var path = require('path');
var should = require('should');
require('mocha');
var outpath = path.join(__dirname, "./out-fixtures");
describe('gulp', function() {
describe('watch()', function() {
beforeEach(rimraf.bind(null, outpath));
beforeEach(mkdirp.bind(null, outpath));
afterEach(rimraf.bind(null, outpath));
var tempFileContent = 'A test generated this file and it is safe to delete';
var writeTimeout = 125; // Wait for it to get to the filesystem
var writeFileWait = function (name, content, cb) {
if (!cb) cb = function(){};
setTimeout(function () {
fs.writeFile(name, content, cb);
}, writeTimeout);
};
it('should call the function when file changes: no options', function(done) {
// arrange
var tempFile = path.join(outpath, 'watch-func.txt');
fs.writeFile(tempFile, tempFileContent, function () {
// assert: it works if it calls done
var watcher = gulp.watch(tempFile, function (evt) {
should.exist(evt);
should.exist(evt.path);
should.exist(evt.type);
evt.type.should.equal('changed');
evt.path.should.equal(path.resolve(tempFile));
watcher.end();
done();
});
// act: change file
writeFileWait(tempFile, tempFileContent+' changed');
});
});
it('should call the function when file changes: w/ options', function(done) {
// arrange
var tempFile = path.join(outpath, 'watch-func-options.txt');
fs.writeFile(tempFile, tempFileContent, function () {
// assert: it works if it calls done
var watcher = gulp.watch(tempFile, {debounceDelay:5}, function (evt) {
should.exist(evt);
should.exist(evt.path);
should.exist(evt.type);
evt.type.should.equal('changed');
evt.path.should.equal(path.resolve(tempFile));
watcher.end();
done();
});
// act: change file
writeFileWait(tempFile, tempFileContent+' changed');
});
});
it('should run many tasks: w/ options', function(done) {
// arrange
var tempFile = path.join(outpath, 'watch-task-options.txt');
var task1 = 'task1';
var task2 = 'task2';
var task3 = 'task3';
var a = 0;
var timeout = writeTimeout * 2.5;
fs.writeFile(tempFile, tempFileContent, function () {
gulp.task(task1, function () {
a++;
});
gulp.task(task2, function () {
a += 10;
});
gulp.task(task3, function () {
throw new Error("task3 called!");
});
// assert
setTimeout(function () {
a.should.equal(11); // task1 and task2
gulp.reset();
watcher.end();
done();
}, timeout);
// it works if it calls the task
var watcher = gulp.watch(tempFile, {debounceDelay:timeout/2}, [task1,task2]);
// act: change file
writeFileWait(tempFile, tempFileContent+' changed');
});
});
});
});