UNPKG

karma-zonejs

Version:

A Karma plugin - adapter for zonejs

58 lines (53 loc) 1.8 kB
var path = require('path'); var fs = require('fs'); var createPattern = function(path) { return {pattern: path, included: true, served: true, watched: false}; }; var initZoneJS = function(files) { var zoneJsDir = path.dirname(path.resolve(path.join(__dirname, '../../zone.js/dist/zone.js'))); var zonejs = null; var jasmine = []; var other = []; fs.readdirSync(zoneJsDir).forEach(function(file) { // only include .js files if (!file.endsWith('.js')) return; // ignore the minified version if (file.endsWith('.min.js')) return; // ignore the node version if (file.indexOf('node') != -1) return; if (file == 'zone.js') { // zone.js must be first so treat it differently zonejs = path.join(zoneJsDir, file); } else if (file.indexOf('jasmine') != -1) { // jasmine must be loaded after jasmine so treat it differently jasmine.push(path.join(zoneJsDir, file)); } else { // collect everything else to be loaded other.push(path.join(zoneJsDir, file)); } }); other.forEach(function(file) { // insert the other files files.unshift(createPattern(file)); }); // Load zone.js as first files.unshift(createPattern(zonejs)); var lastJasmine = -1; // locate if we have jasmine in the list for (var i = 0; i < files.length; i++) { var file = files[i].pattern; if (file.indexOf('node_modules') != -1 && file.indexOf('jasmine') != -1) { lastJasmine = i; } } if (lastJasmine > -1) { // we have jasmine, load the jasmine related files after jasmine. jasmine.forEach(function(file) { files.splice(lastJasmine + 1, 0, createPattern(file)); }); } }; initZoneJS.$inject = ['config.files']; module.exports = { 'framework:zonejs': ['factory', initZoneJS] };