loopback/Gruntfile.js

240 lines
6.1 KiB
JavaScript
Raw Normal View History

2014-02-12 00:01:51 +00:00
/*global module:false*/
module.exports = function(grunt) {
// Do not report warnings from unit-tests exercising deprecated paths
process.env.NO_DEPRECATION = 'loopback';
grunt.loadNpmTasks('grunt-mocha-test');
2014-02-12 00:01:51 +00:00
// 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']
}
}
},
jshint: {
options: {
jshintrc: true
},
gruntfile: {
src: 'Gruntfile.js'
},
2014-10-16 23:16:27 +00:00
lib: {
src: ['lib/**/*.js']
},
2014-11-04 12:52:49 +00:00
common: {
src: ['common/**/*.js']
},
browser: {
src: ['browser/**/*.js']
},
server: {
src: ['server/**/*.js']
2014-11-21 01:57:22 +00:00
},
test: {
src: ['test/**/*.js']
}
2014-02-12 00:01:51 +00:00
},
jscs: {
gruntfile: 'Gruntfile.js',
2014-11-04 12:52:49 +00:00
lib: ['lib/**/*.js'],
common: ['common/**/*.js'],
2014-11-21 02:35:36 +00:00
server: ['server/**/*.js'],
browser: ['browser/**/*.js'],
2014-11-21 02:35:36 +00:00
test: ['test/**/*.js']
},
2014-02-12 00:01:51 +00:00
watch: {
gruntfile: {
files: '<%= jshint.gruntfile.src %>',
tasks: ['jshint:gruntfile']
},
2014-10-16 23:16:27 +00:00
lib: {
files: ['<%= jshint.lib.src %>'],
tasks: ['jshint:lib']
},
test: {
files: ['<%= jshint.test.src %>'],
tasks: ['jshint:test']
2014-02-12 00:01:51 +00:00
}
},
browserify: {
dist: {
files: {
'dist/loopback.js': ['index.js'],
},
options: {
2014-12-08 22:59:21 +00:00
ignore: ['nodemailer', 'passport', 'bcrypt'],
2014-02-12 00:01:51 +00:00
standalone: 'loopback'
}
}
},
mochaTest: {
'unit': {
src: 'test/*.js',
2014-02-12 00:01:51 +00:00
options: {
reporter: 'dot',
2014-02-12 00:01:51 +00:00
}
2014-04-14 19:25:41 +00:00
},
'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',
},
2014-04-14 19:25:41 +00:00
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: [
2014-04-16 14:33:17 +00:00
'test/e2e/remote-connector.e2e.js',
'test/e2e/replication.e2e.js'
2014-04-14 19:25:41 +00:00
],
// list of files to exclude
exclude: [
2014-10-16 23:16:27 +00:00
2014-04-14 19:25:41 +00:00
],
// 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',
2014-12-08 22:59:21 +00:00
'supertest',
'bcrypt'
2014-04-14 19:25:41 +00:00
],
// transform: ['coffeeify'],
// debug: true,
// noParse: ['jquery'],
watch: true,
},
// Add browserify to preprocessors
preprocessors: {'test/e2e/*': ['browserify']}
}
2014-02-12 00:01:51 +00:00
}
}
});
// These plugins provide necessary tasks.
grunt.loadNpmTasks('grunt-browserify');
grunt.loadNpmTasks('grunt-contrib-uglify');
grunt.loadNpmTasks('grunt-contrib-jshint');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.loadNpmTasks('grunt-jscs');
2014-02-12 00:01:51 +00:00
grunt.loadNpmTasks('grunt-karma');
2014-04-14 19:25:41 +00:00
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();
});
2014-04-14 19:25:41 +00:00
});
grunt.registerTask('e2e', ['e2e-server', 'karma:e2e']);
2014-02-12 00:01:51 +00:00
// Default task.
grunt.registerTask('default', ['browserify']);
grunt.registerTask('test', [
'jscs',
'jshint',
process.env.JENKINS_HOME ? 'mochaTest:unit-xml' : 'mochaTest:unit',
'karma:unit-once']);
// alias for sl-ci-run and `npm test`
grunt.registerTask('mocha-and-karma', ['test']);
2014-02-12 00:01:51 +00:00
};