250 lines
6.6 KiB
JavaScript
250 lines
6.6 KiB
JavaScript
// Copyright IBM Corp. 2014,2018. All Rights Reserved.
|
|
// Node module: loopback
|
|
// This file is licensed under the MIT License.
|
|
// License text available at https://opensource.org/licenses/MIT
|
|
|
|
/* global module:false */
|
|
'use strict';
|
|
module.exports = function(grunt) {
|
|
// Do not report warnings from unit-tests exercising deprecated paths
|
|
process.env.NO_DEPRECATION = 'loopback';
|
|
|
|
grunt.loadNpmTasks('grunt-mocha-test');
|
|
|
|
// Project configuration.
|
|
grunt.initConfig({
|
|
// Metadata.
|
|
pkg: grunt.file.readJSON('package.json'),
|
|
banner: '/*! <%= pkg.title || pkg.name %> - v<%= pkg.version %> - ' +
|
|
'<%= grunt.template.today("yyyy-mm-dd") %>\n' +
|
|
'<%= pkg.homepage ? "* " + pkg.homepage + "\\n" : "" %>' +
|
|
'* Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author.name %>;' +
|
|
' Licensed <%= _.pluck(pkg.licenses, "type").join(", ") %> */\n',
|
|
// Task configuration.
|
|
uglify: {
|
|
options: {
|
|
banner: '<%= banner %>',
|
|
},
|
|
dist: {
|
|
files: {
|
|
'dist/loopback.min.js': ['dist/loopback.js'],
|
|
},
|
|
},
|
|
},
|
|
eslint: {
|
|
gruntfile: {
|
|
src: 'Gruntfile.js',
|
|
},
|
|
lib: {
|
|
src: ['lib/**/*.js'],
|
|
},
|
|
common: {
|
|
src: ['common/**/*.js'],
|
|
},
|
|
server: {
|
|
src: ['server/**/*.js'],
|
|
},
|
|
test: {
|
|
src: ['test/**/*.js'],
|
|
},
|
|
},
|
|
watch: {
|
|
gruntfile: {
|
|
files: '<%= eslint.gruntfile.src %>',
|
|
tasks: ['eslint:gruntfile'],
|
|
},
|
|
browser: {
|
|
files: ['<%= eslint.browser.src %>'],
|
|
tasks: ['eslint:browser'],
|
|
},
|
|
common: {
|
|
files: ['<%= eslint.common.src %>'],
|
|
tasks: ['eslint:common'],
|
|
},
|
|
lib: {
|
|
files: ['<%= eslint.lib.src %>'],
|
|
tasks: ['eslint:lib'],
|
|
},
|
|
server: {
|
|
files: ['<%= eslint.server.src %>'],
|
|
tasks: ['eslint:server'],
|
|
},
|
|
test: {
|
|
files: ['<%= eslint.test.src %>'],
|
|
tasks: ['eslint:test'],
|
|
},
|
|
},
|
|
browserify: {
|
|
dist: {
|
|
files: {
|
|
'dist/loopback.js': ['index.js'],
|
|
},
|
|
options: {
|
|
ignore: ['nodemailer', 'passport', 'bcrypt'],
|
|
standalone: 'loopback',
|
|
},
|
|
},
|
|
},
|
|
mochaTest: {
|
|
'unit': {
|
|
src: 'test/*.js',
|
|
options: {
|
|
reporter: 'dot',
|
|
require: require.resolve('./test/helpers/use-english.js'),
|
|
},
|
|
},
|
|
'unit-xml': {
|
|
src: 'test/*.js',
|
|
options: {
|
|
reporter: 'xunit',
|
|
captureFile: 'xunit.xml',
|
|
},
|
|
},
|
|
},
|
|
karma: {
|
|
'unit-once': {
|
|
configFile: 'test/karma.conf.js',
|
|
browsers: ['PhantomJS'],
|
|
singleRun: true,
|
|
reporters: ['dots', 'junit'],
|
|
|
|
// increase the timeout for slow build slaves (e.g. Travis-ci)
|
|
browserNoActivityTimeout: 30000,
|
|
|
|
// CI friendly test output
|
|
junitReporter: {
|
|
outputFile: 'karma-xunit.xml',
|
|
},
|
|
|
|
browserify: {
|
|
// Disable sourcemaps to prevent
|
|
// Fatal error: Maximum call stack size exceeded
|
|
debug: false,
|
|
// Disable watcher, grunt will exit after the first run
|
|
watch: false,
|
|
},
|
|
},
|
|
unit: {
|
|
configFile: 'test/karma.conf.js',
|
|
},
|
|
e2e: {
|
|
options: {
|
|
// base path, that will be used to resolve files and exclude
|
|
basePath: '',
|
|
|
|
// frameworks to use
|
|
frameworks: ['mocha', 'browserify'],
|
|
|
|
// list of files / patterns to load in the browser
|
|
files: [
|
|
'test/e2e/remote-connector.e2e.js',
|
|
'test/e2e/replication.e2e.js',
|
|
],
|
|
|
|
// list of files to exclude
|
|
exclude: [
|
|
|
|
],
|
|
|
|
// test results reporter to use
|
|
// possible values: 'dots', 'progress', 'junit', 'growl', 'coverage'
|
|
reporters: ['dots'],
|
|
|
|
// web server port
|
|
port: 9876,
|
|
|
|
// cli runner port
|
|
runnerPort: 9100,
|
|
|
|
// enable / disable colors in the output (reporters and logs)
|
|
colors: true,
|
|
|
|
// level of logging
|
|
// possible values: config.LOG_DISABLE || config.LOG_ERROR || config.LOG_WARN || config.LOG_INFO || config.LOG_DEBUG
|
|
logLevel: 'warn',
|
|
|
|
// enable / disable watching file and executing tests whenever any file changes
|
|
autoWatch: true,
|
|
|
|
// Start these browsers, currently available:
|
|
// - Chrome
|
|
// - ChromeCanary
|
|
// - Firefox
|
|
// - Opera
|
|
// - Safari (only Mac)
|
|
// - PhantomJS
|
|
// - IE (only Windows)
|
|
browsers: [
|
|
'Chrome',
|
|
],
|
|
|
|
// If browser does not capture in given timeout [ms], kill it
|
|
captureTimeout: 60000,
|
|
|
|
// Continuous Integration mode
|
|
// if true, it capture browsers, run tests and exit
|
|
singleRun: false,
|
|
|
|
// Browserify config (all optional)
|
|
browserify: {
|
|
// extensions: ['.coffee'],
|
|
ignore: [
|
|
'nodemailer',
|
|
'passport',
|
|
'passport-local',
|
|
'superagent',
|
|
'supertest',
|
|
'bcrypt',
|
|
],
|
|
// transform: ['coffeeify'],
|
|
// debug: true,
|
|
// noParse: ['jquery'],
|
|
watch: true,
|
|
},
|
|
|
|
// Add browserify to preprocessors
|
|
preprocessors: {'test/e2e/*': ['browserify']},
|
|
},
|
|
},
|
|
},
|
|
|
|
});
|
|
|
|
// These plugins provide necessary tasks.
|
|
grunt.loadNpmTasks('grunt-browserify');
|
|
grunt.loadNpmTasks('grunt-contrib-uglify');
|
|
grunt.loadNpmTasks('grunt-eslint');
|
|
grunt.loadNpmTasks('grunt-contrib-watch');
|
|
grunt.loadNpmTasks('grunt-karma');
|
|
|
|
grunt.registerTask('e2e-server', function() {
|
|
var done = this.async();
|
|
var app = require('./test/fixtures/e2e/app');
|
|
app.listen(0, function() {
|
|
process.env.PORT = this.address().port;
|
|
done();
|
|
});
|
|
});
|
|
|
|
grunt.registerTask('skip-karma', function() {
|
|
console.log(`*** SKIPPING PHANTOM-JS BASED TESTS ON ${process.platform}` +
|
|
` ${process.arch} ***`);
|
|
});
|
|
|
|
grunt.registerTask('e2e', ['e2e-server', 'karma:e2e']);
|
|
|
|
// Default task.
|
|
grunt.registerTask('default', ['browserify']);
|
|
|
|
grunt.registerTask('test', [
|
|
'eslint',
|
|
process.env.JENKINS_HOME ? 'mochaTest:unit-xml' : 'mochaTest:unit',
|
|
process.env.JENKINS_HOME && (/^win/.test(process.platform) ||
|
|
/^s390x/.test(process.arch) || /^ppc64/.test(process.arch)) ?
|
|
'skip-karma' : 'karma:unit-once',
|
|
]);
|
|
|
|
// alias for sl-ci-run and `npm test`
|
|
grunt.registerTask('mocha-and-karma', ['test']);
|
|
};
|