diff options
| -rw-r--r-- | .travis.yml | 3 | ||||
| -rw-r--r-- | Gruntfile.js | 35 | ||||
| -rw-r--r-- | karma-shared.conf.js | 1 | ||||
| -rw-r--r-- | lib/grunt/utils.js | 25 | ||||
| -rw-r--r-- | package.json | 3 |
5 files changed, 61 insertions, 6 deletions
diff --git a/.travis.yml b/.travis.yml index 92da3ed9..3b439f7c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,8 +13,7 @@ before_script: - ./lib/sauce/sauce_connect_setup.sh - npm install -g grunt-cli - grunt package - - grunt webserver > /dev/null & - ./lib/sauce/sauce_connect_block.sh script: - - grunt test --reporters dots --browsers SL_Chrome + - grunt parallel:travis --reporters dots --browsers SL_Chrome diff --git a/Gruntfile.js b/Gruntfile.js index 968b2b82..e420498a 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -9,6 +9,7 @@ module.exports = function(grunt) { grunt.loadNpmTasks('grunt-contrib-compress'); grunt.loadNpmTasks('grunt-contrib-jasmine-node'); grunt.loadNpmTasks('grunt-shell'); + grunt.loadNpmTasks('grunt-parallel'); grunt.loadTasks('lib/grunt'); var NG_VERSION = util.getVersion(); @@ -23,6 +24,21 @@ module.exports = function(grunt) { grunt.initConfig({ NG_VERSION: NG_VERSION, + parallel: { + travis: { + options: { + stream: true, + }, + tasks: [ + util.parallelTask('test:docs'), + util.parallelTask('test:modules'), + util.parallelTask('test:jquery'), + util.parallelTask('test:jqlite'), + util.parallelTask('test:e2e') + ] + } + }, + connect: { devserver: { options: { @@ -42,7 +58,24 @@ module.exports = function(grunt) { } } }, - testserver: {} + testserver: { + options: { + middleware: function(connect, options){ + return [ + function(req, resp, next) { + // cache get requests to speed up tests on travis + if (req.method === 'GET') { + resp.setHeader('Cache-control', 'public, max-age=3600'); + } + + next(); + }, + connect.favicon('images/favicon.ico'), + connect.static(options.base) + ]; + } + } + } }, diff --git a/karma-shared.conf.js b/karma-shared.conf.js index 3157d50f..81476708 100644 --- a/karma-shared.conf.js +++ b/karma-shared.conf.js @@ -5,6 +5,7 @@ module.exports = function(config) { logLevel: config.LOG_INFO, logColors: true, browsers: ['Chrome'], + runnerPort: 0, // config for Travis CI sauceLabs: { diff --git a/lib/grunt/utils.js b/lib/grunt/utils.js index 23211039..44332380 100644 --- a/lib/grunt/utils.js +++ b/lib/grunt/utils.js @@ -36,11 +36,13 @@ module.exports = { var browsers = grunt.option('browsers'); var reporters = grunt.option('reporters'); var noColor = grunt.option('no-colors'); + var port = grunt.option('port'); var p = spawn('node', ['node_modules/karma/bin/karma', 'start', config, singleRun ? '--single-run=true' : '', reporters ? '--reporters=' + reporters : '', browsers ? '--browsers=' + browsers : '', - noColor ? '--no-colors' : '' + noColor ? '--no-colors' : '', + port ? '--port=' + port : '' ]); p.stdout.pipe(process.stdout); p.stderr.pipe(process.stderr); @@ -235,5 +237,24 @@ module.exports = { } next(); }; - } + }, + + parallelTask: function(name) { + var args = [name, '--port=' + this.lastParallelTaskPort]; + + if (grunt.option('browsers')) { + args.push('--browsers=' + grunt.option('browsers')); + } + + if (grunt.option('reporters')) { + args.push('--reporters=' + grunt.option('reporters')); + } + + this.lastParallelTaskPort++; + + + return {grunt: true, args: args}; + }, + + lastParallelTaskPort: 9876 }; diff --git a/package.json b/package.json index 94d8da82..3b39cea0 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,8 @@ "yaml-js": "0.0.5", "showdown": "0.3.1", "rewire": "1.1.3", - "grunt-contrib-jasmine-node": "~0.1.1" + "grunt-contrib-jasmine-node": "~0.1.1", + "grunt-parallel": "~0.2.0" }, "licenses": [ { |
