UNPKG

gulp-dependency-directive

Version:

Resolve dependency directives in assets (e.g. "@requires" or "//= require" in JavaScript)

79 lines (68 loc) 2.15 kB
var gulp = require('gulp'), fs = require('fs'), path = require('path'), es = require('event-stream'), assert = require('assert'), concat = require('gulp-concat'), tap = require('gulp-tap'), resolveDependencies = require('../'); describe('gulp-dependency-directive', function() { it('should generate concatenated JS file', function(done) { gulp.src(__dirname + '/fixtures/main.js') .pipe(resolveDependencies()) .pipe(concat('main.js')) .pipe(gulp.dest(__dirname + '/results/')) .pipe(es.wait(function() { assert.equal( fs.readFileSync(__dirname + '/results/main.js', 'utf8'), fs.readFileSync(__dirname + '/expected/main.js', 'utf8') ); fs.unlinkSync(__dirname + '/results/main.js'); fs.rmdirSync(__dirname + '/results/'); done(); })); }); it('should use resolvePath and generate concatenated JS file', function(done) { function resolvePath(match, targetFile) { match = match.replace(/com\.example\./, '').replace(/\./g, '/'); match += '.js'; return path.join(path.dirname(targetFile.path), match); } gulp.src(__dirname + '/fixtures/resolvepath.js') .pipe(resolveDependencies({ pattern: /\* @requires [\s-]*(.*)/g, resolvePath: resolvePath })) .pipe(concat('resolvepath.js')) .pipe(gulp.dest(__dirname + '/results/')) .pipe(es.wait(function() { assert.equal( fs.readFileSync(__dirname + '/results/resolvepath.js', 'utf8'), fs.readFileSync(__dirname + '/expected/resolvepath.js', 'utf8') ); fs.unlinkSync(__dirname + '/results/resolvepath.js'); fs.rmdirSync(__dirname + '/results/'); done(); })); }); it('should throw error due to circular dependency', function(done) { gulp.src(__dirname + '/circular/a.js') .pipe(resolveDependencies()) .on('error', function() { done(); }); }); it('should report the initial file stats', function(done) { gulp.src(__dirname + '/fixtures/main.js') .pipe(resolveDependencies()) .pipe(tap(function(file) { assert.deepEqual( fs.statSync(file.path).mtime, file.stat.mtime ); })) .on('end', function() { done(); }); }); });