Skip to content

Commit

Permalink
basic testing implemented
Browse files Browse the repository at this point in the history
  • Loading branch information
Reagan Thomas committed Mar 2, 2015
1 parent 28b5c85 commit e178e6c
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 14 deletions.
9 changes: 7 additions & 2 deletions build/index.js
Expand Up @@ -14,7 +14,7 @@ var defaultOptions = {
};

module.exports = function (options) {
options = _.defaults(_.assign(defaultOptions, options), options);
options = _.assign(defaultOptions, options);

if (typeof options.taskDirectory !== String) {
options.taskDirectory = defaultOptions.taskDirectory;
Expand All @@ -24,6 +24,11 @@ module.exports = function (options) {
options.taskDirectory = path.join(process.cwd(), options.taskDirectory);
}

var dirStat = fs.statSync(options.taskDirectory);
if (!dirStat.isDirectory()) {
throw new Error("Error: " + options.taskDirectory + " is not a directory");
}

fs.readdirSync(options.taskDirectory).forEach(function (filename) {
var file = path.join(options.taskDirectory, filename);
var stat = fs.statSync(file);
Expand All @@ -34,7 +39,7 @@ module.exports = function (options) {

var taskname = filename.slice(0, -3);
taskname = taskname.split(options.filenameDelimiter).join(options.taskDelimiter);
var taskinfo = require(file)(gulp, _.omit(options, "plugins"), options.plugins);
var taskinfo = require(file)(gulp, options, options.plugins);

gulp.task.apply(gulp, [taskname].concat(taskinfo));
});
Expand Down
22 changes: 15 additions & 7 deletions gulpfile.js
Expand Up @@ -3,15 +3,23 @@
var gulp = require('gulp');
var to5 = require('gulp-6to5');
var bump = require('gulp-bump');
var mocha = require('gulp-mocha');

gulp.task('bump', function() {
gulp.src('./package.json')
gulp.task('build', function() {
return gulp.src('index.js')
.pipe(to5())
.pipe(gulp.dest('./build'));
});

gulp.task('test', [ 'build' ], function() {
return gulp.src('./test/**.*.js', { read: false })
.pipe(mocha({ reporter: 'dot' }));
});

gulp.task('bump', [ 'build', 'test' ], function() {
return gulp.src('./package.json')
.pipe(bump())
.pipe(gulp.dest('./'));
});

gulp.task('default', [ 'bump' ], function() {
return gulp.src('index.js')
.pipe(to5())
.pipe(gulp.dest('./build'));
});
gulp.task('default', [ 'build', 'test', 'bump' ]);
9 changes: 7 additions & 2 deletions index.js
Expand Up @@ -14,7 +14,7 @@ var defaultOptions = {
};

module.exports = function(options) {
options = _.defaults(_.assign(defaultOptions, options), options);
options = _.assign(defaultOptions, options);

if(typeof options.taskDirectory !== String) {
options.taskDirectory = defaultOptions.taskDirectory;
Expand All @@ -24,6 +24,11 @@ module.exports = function(options) {
options.taskDirectory = path.join(process.cwd(), options.taskDirectory);
}

let dirStat = fs.statSync(options.taskDirectory);
if(!dirStat.isDirectory()) {
throw new Error('Error: ' + options.taskDirectory + ' is not a directory');
}

fs.readdirSync(options.taskDirectory)
.forEach(function(filename) {
let file = path.join(options.taskDirectory, filename);
Expand All @@ -35,7 +40,7 @@ module.exports = function(options) {

let taskname = filename.slice(0,-3);
taskname = taskname.split(options.filenameDelimiter).join(options.taskDelimiter);
let taskinfo = require(file)(gulp, _.omit(options, 'plugins'), options.plugins);
let taskinfo = require(file)(gulp, options, options.plugins);

gulp.task.apply(gulp, [taskname].concat(taskinfo));
});
Expand Down
6 changes: 3 additions & 3 deletions package.json
@@ -1,6 +1,6 @@
{
"name": "gulp-simple-task-loader",
"version": "1.0.12",
"version": "1.0.14",
"description": "A simple task loader for gulp",
"keywords": [
"gulp",
Expand All @@ -20,12 +20,12 @@
},
"dependencies": {
"debug": "^2.1.1",
"fs": "0.0.2",
"gulp": "^3.8.11",
"lodash": "^3.3.1"
},
"devDependencies": {
"gulp-6to5": "^3.0.0",
"gulp-bump": "^0.2.2"
"gulp-bump": "^0.2.2",
"gulp-mocha": "^2.0.0"
}
}
59 changes: 59 additions & 0 deletions test/index.spec.js
@@ -0,0 +1,59 @@
'use strict';

var assert = require('assert');
var gulp = require('gulp');

var taskLoader = '../build/index.js';

describe('gulp-simple-task-loader', function() {
beforeEach(function() {
delete require.cache[require.resolve(taskLoader)];
});

describe('edge cases', function() {
describe('task directory errors', function() {
it('should error when directory does not exist', function(done) {
assert.throws(function() {
require(taskLoader)();
}, Error);
done();
});

it('should error when directory is not a directory', function(done) {
assert.throws(function() {
require(taskLoader)({ taskDirectory: 'index.js' });
}, Error);
done();
});
});
});

describe('options', function() {
it('overwrites default options', function(done) {
require(taskLoader)({
taskDirectory: 'test/test-tasks',
plugins: { derp: 'herp' },
filenameDelimiter: '-',
taskDelimiter: ':'
});

var config = gulp.tasks['config'].fn();
assert.equal(config.taskDirectory.slice(-15), 'test/test-tasks');
assert.deepEqual(config.plugins, { derp: 'herp' });
assert.equal(config.filenameDelimiter, '-');
assert.equal(config.taskDelimiter, ':');
done();
});

it('adds new options', function(done) {
require(taskLoader)({
taskDirectory: 'test/test-tasks',
herp: 'derp'
});

var config = gulp.tasks['config'].fn();
assert.equal(config.herp, 'derp');
done();
});
});
});
7 changes: 7 additions & 0 deletions test/test-tasks/config.js
@@ -0,0 +1,7 @@
'use strict';

module.exports = function(gulp, config, plugins) {
return function() {
return config;
};
};

0 comments on commit e178e6c

Please sign in to comment.