| "use strict"; |
| |
| module.exports = function( grunt ) { |
| grunt.registerTask( "testswarm", function( commit, configFile, projectName, browserSets, |
| timeout, testMode ) { |
| var jobName, config, tests, |
| testswarm = require( "testswarm" ), |
| runs = {}, |
| done = this.async(), |
| pull = /PR-(\d+)/.exec( commit ); |
| |
| projectName = projectName || "jquery"; |
| config = grunt.file.readJSON( configFile )[ projectName ]; |
| browserSets = browserSets || config.browserSets; |
| if ( browserSets[ 0 ] === "[" ) { |
| |
| // We got an array, parse it |
| browserSets = JSON.parse( browserSets ); |
| } |
| timeout = timeout || 1000 * 60 * 15; |
| tests = grunt.config( [ this.name, "tests" ] ); |
| |
| if ( pull ) { |
| jobName = "Pull <a href='https://github.com/jquery/jquery/pull/" + |
| pull[ 1 ] + "'>#" + pull[ 1 ] + "</a>"; |
| } else { |
| jobName = "Commit <a href='https://github.com/jquery/jquery/commit/" + |
| commit + "'>" + commit.substr( 0, 10 ) + "</a>"; |
| } |
| |
| if ( testMode === "basic" ) { |
| runs.basic = config.testUrl + commit + "/test/index.html?module=basic"; |
| } else { |
| tests.forEach( function( test ) { |
| runs[ test ] = config.testUrl + commit + "/test/index.html?module=" + test; |
| } ); |
| } |
| |
| testswarm.createClient( { |
| url: config.swarmUrl |
| } ) |
| .addReporter( testswarm.reporters.cli ) |
| .auth( { |
| id: config.authUsername, |
| token: config.authToken |
| } ) |
| .addjob( |
| { |
| name: jobName, |
| runs: runs, |
| runMax: config.runMax, |
| browserSets: browserSets, |
| timeout: timeout |
| }, function( err, passed ) { |
| if ( err ) { |
| grunt.log.error( err ); |
| } |
| done( passed ); |
| } |
| ); |
| } ); |
| }; |