UNPKG

gulp-html-lint

Version:
109 lines (99 loc) 2.85 kB
'use strict'; const pkg = require('./package'), gulp = require('gulp'), gulpif = require('gulp-if'), gutil = require('gulp-util'), sync = require('gulp-sync')(gulp).sync, eslint = require('gulp-eslint'), mocha = require('gulp-mocha'), istanbul = require('gulp-istanbul'), mkdirp = require('mkdirp'), path = require('path'), fs = require('fs'), del = require('del'), _ = require('lodash'), argv = require('minimist')(process.argv.slice(2), { boolean: ['debug', 'bail'], string: ['file', 'grep'], alias: { file: 'f', grep: 'g', debug: 'd', bail: 'b' } }); // Print banner gutil.log([ fs.readFileSync('.banner', 'utf8'), `${pkg.name} v${pkg.version}`, pkg.description ].map(_.unary(gutil.colors.green)).join('\n')); argv.debug && gutil.log('Paremeters:', argv); function initTestMode() { global.testMode = 'unit'; process.env.JUNIT_REPORT_PATH = 'build/test/results/report.xml'; // eslint-disable-line process.env.JUNIT_REPORT_STACK = true; // eslint-disable-line global.requireLib = function(libmodule) { return require(path.resolve(__dirname, 'lib', libmodule || './')); }; } gulp.task('clean', (done) => { del(['build']).then((paths) => { argv.debug && paths.length && gutil.log('Deleted files/folders:\n', paths.join('\n')); done(); }); }); gulp.task('lint', () => { const src = argv.file || [ '**/*.js', '!node_modules/**/*', '!build/**/*' ]; argv.debug && gutil.log('Running code lint on:', src); return gulp.src(src) .pipe(eslint()) .pipe(gulpif(!argv.bail, eslint.format())) .pipe(gulpif(!argv.bail, eslint.failAfterError())) .pipe(gulpif(argv.bail, eslint.failOnError())); }); gulp.task('test', () => { const testSrc = argv.file || 'test/**/*.test.js'; argv.debug && gutil.log('Running unit tests for:', testSrc); initTestMode(); return gulp.src(testSrc) .pipe(mocha({ reporter: 'mocha-jenkins-reporter', debug: argv.debug, grep: argv.grep, bail: argv.bail })); }); gulp.task('test-cov', (done) => { mkdirp.sync('./build/test/results'); mkdirp.sync('./build/test/coverage'); gulp.src('lib/**/*.js') .pipe(istanbul({ includeUntested: true })) .pipe(istanbul.hookRequire()) .on('finish', () => { const testSrc = argv.file || 'test/**/*.test.js'; initTestMode(); argv.debug && gutil.log('Running instrumented unit tests for:', testSrc); gulp.src(testSrc) .pipe(mocha({ reporter: 'mocha-jenkins-reporter', debug: argv.debug, grep: argv.grep, bail: argv.bail })) .pipe(istanbul.writeReports({ dir: './build/test/coverage', reporters: ['lcov', 'json', 'text', 'text-summary', 'cobertura'], reportOpts: { dir: './build/test/coverage' } })) .on('end', done); }); }); gulp.task('default', sync(['clean', 'lint', 'test'])); gulp.task('ci', sync(['clean', 'lint', 'test-cov']));