aboutsummaryrefslogtreecommitdiffstats
path: root/build/tasks/testswarm.js
diff options
context:
space:
mode:
Diffstat (limited to 'build/tasks/testswarm.js')
-rw-r--r--build/tasks/testswarm.js50
1 files changed, 50 insertions, 0 deletions
diff --git a/build/tasks/testswarm.js b/build/tasks/testswarm.js
new file mode 100644
index 000000000..92b696e27
--- /dev/null
+++ b/build/tasks/testswarm.js
@@ -0,0 +1,50 @@
+module.exports = function( grunt ) {
+
+ "use strict";
+
+ grunt.registerTask( "testswarm", function( commit, configFile ) {
+ var jobName,
+ testswarm = require( "testswarm" ),
+ runs = {},
+ done = this.async(),
+ pull = /PR-(\d+)/.exec( commit ),
+ config = grunt.file.readJSON( configFile ).jquery,
+ tests = grunt.config([ this.name, "tests" ]);
+
+ if ( pull ) {
+ jobName = "jQuery pull <a href='https://github.com/jquery/jquery/pull/" +
+ pull[ 1 ] + "'>#" + pull[ 1 ] + "</a>";
+ } else {
+ jobName = "jQuery commit #<a href='https://github.com/jquery/jquery/commit/" +
+ commit + "'>" + commit.substr( 0, 10 ) + "</a>";
+ }
+
+ tests.forEach(function( test ) {
+ runs[ test ] = config.testUrl + commit + "/test/index.html?module=" + test;
+ });
+
+ testswarm.createClient( {
+ url: config.swarmUrl,
+ pollInterval: 10000,
+ timeout: 1000 * 60 * 30
+ } )
+ .addReporter( testswarm.reporters.cli )
+ .auth( {
+ id: config.authUsername,
+ token: config.authToken
+ })
+ .addjob(
+ {
+ name: jobName,
+ runs: runs,
+ runMax: config.runMax,
+ browserSets: config.browserSets
+ }, function( err, passed ) {
+ if ( err ) {
+ grunt.log.error( err );
+ }
+ done( passed );
+ }
+ );
+ });
+};