UNPKG

angular-material-npfixed

Version:

The Angular Material project is an implementation of Material Design in Angular.js. This project provides a set of reusable, well-tested, and accessible Material Design UI components. Angular Material is supported internally at Google by the Angular.js, M

98 lines (92 loc) 3.21 kB
var BUILD_MODE = require('../const').BUILD_MODE; var gulp = require('gulp'); var PluginError = require('gulp-util').PluginError; var path = require('path'); var through2 = require('through2'); var series = require('stream-series'); var util = require('../util'); var gulpif = require('gulp-if'); var utils = require('../../scripts/gulp-utils.js'); var kDisallowedFunctions = [ // Allow xit/xdescribe --- disabling tests is okay 'fit', 'iit', //'xit', 'fdescribe', 'ddescribe', //'xdescribe', 'describe.only', 'it.only' ]; function disallowedIndex(largeString, disallowedString) { var notFunctionName = '[^A-Za-z0-9$_]'; var regex = new RegExp('(^|' + notFunctionName + ')(' + disallowedString + ')' + notFunctionName + '*\\(', 'gm'); var match = regex.exec(largeString); // Return the match accounting for the first submatch length. return match != null ? match.index + match[1].length : -1; } function checkFile(fileContents, disallowed) { var res = void 0; if (Array.isArray(disallowed)) { disallowed.forEach(function(str) { var index = disallowedIndex(fileContents, str); if (index !== -1) { res = res || []; res.push({ str: str, line: fileContents.substr(0, index).split('\n').length, index: index }); } }); } return res; } exports.task = function() { var failures = void 0; return gulp.src(['src/**/*.spec.js', 'test/**/*-spec.js' ]) .pipe(through2.obj(function(file, enc, next) { var errors = checkFile(file.contents.toString(), kDisallowedFunctions); if (errors) { failures = failures || []; failures.push({ file: file, contents: file.contents.toString(), errors: errors }); } next(); }, function(callback) { if (failures) { var indented = true; this.emit('error', new PluginError('ddescribe-iit', { message: '\n' + failures.map(function(failure) { var filename = path.relative(process.cwd(), failure.file.path); var lines = failure.contents.split('\n'); var start = 0; var starts = lines.map(function(line) { var s = start; start += line.length + 1; return s; }); return failure.errors.map(function(error) { var line = lines[error.line - 1]; var start = starts[error.line - 1]; var col = (error.index - start); var msg = ' `' + error.str + '` found at ' +filename + ':' + error.line + ':' + (col+1) + '\n' + ' ' + line + '\n' + ' ' + repeat(' ', col) + repeat('^', error.str.length); return msg; function repeat(c, len) { var s = ''; if (len > 0) { for (var i = 0; i < len; ++i) { s += c; } } return s; } }).join('\n\n'); }).join('\n\n'), showStack: false })); } callback(); })); };