/*global config:true, task:true*/ module.exports = function( grunt ) { grunt.loadNpmTasks( "grunt-git-authors" ); grunt.initConfig({ pkg: '', qunit: { qunit: [ 'test/index.html', 'test/async.html' // TODO figure out why this fails on our Jenkins server (Linux) // 'test/logs.html' ], addons: [ 'addons/canvas/canvas.html', 'addons/close-enough/close-enough.html', 'addons/composite/composite-demo-test.html' // TODO same as above // 'addons/step/step.html' ] }, lint: { qunit: 'qunit/qunit.js', addons: 'addons/**.js', tests: 'test/**.js', grunt: 'grunt.js' }, // TODO remove this once grunt 0.4 is out, see jquery-ui for other details jshint: (function() { function parserc( path ) { var rc = grunt.file.readJSON( (path || "") + ".jshintrc" ), settings = { options: rc, globals: {} }; (rc.predef || []).forEach(function( prop ) { settings.globals[ prop ] = true; }); delete rc.predef; return settings; } return { qunit: parserc( "qunit/" ), addons: parserc( "addons/" ), tests: parserc( "test/" ) }; })() }); grunt.registerTask( "build-git", function( sha ) { function processor( content ) { var tagline = " - A JavaScript Unit Testing Framework"; return content.replace( tagline, "-" + sha + " " + grunt.template.today('isoDate') + tagline ); } grunt.file.copy( "qunit/qunit.css", "dist/qunit-git.css", { process: processor }); grunt.file.copy( "qunit/qunit.js", "dist/qunit-git.js", { process: processor }); }); grunt.registerTask( "testswarm", function( commit, configFile ) { var testswarm = require( "testswarm" ), config = grunt.file.readJSON( configFile ).qunit, runs = {}, done = this.async(); ["index", "async"].forEach(function (suite) { runs[suite] = config.testUrl + commit + "/test/" + suite + ".html"; }); testswarm.createClient( { url: config.swarmUrl, pollInterval: 10000, timeout: 1000 * 60 * 30 } ) .addReporter( testswarm.reporters.cli ) .auth( { id: config.authUsername, token: config.authToken } ) .addjob( { name: 'QUnit commit #' + commit.substr( 0, 10 ) + '', runs: runs, browserSets: config.browserSets }, function( err, passed ) { if ( err ) { grunt.log.error( err ); } done( passed ); } ); }); grunt.registerTask('default', 'lint qunit'); };