From: Timo Tijhof Date: Thu, 8 Jan 2015 20:33:47 +0000 (+0000) Subject: tests: Move npm-test to repo root X-Git-Tag: 1.31.0-rc.0~12687 X-Git-Url: http://git.cyclocoop.org/data/Fool?a=commitdiff_plain;h=57f5e6bf200bc1bf7df108cbfc2bb1846aea4242;p=lhc%2Fweb%2Fwiklou.git tests: Move npm-test to repo root This is way overdue as it isn't experimental anymore. Keeping it in a non-standard subdirectory makes it harder to discover for people. And makes it harder to run from Jenkins since this is already being ran on every commit. Related to 70f3919. Change-Id: Iaf5cf65616f82640145fbb6395c36129428602ca --- diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000000..9cf89d0827 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,111 @@ +/*jshint node:true */ +module.exports = function ( grunt ) { + grunt.loadNpmTasks( 'grunt-contrib-jshint' ); + grunt.loadNpmTasks( 'grunt-contrib-watch' ); + grunt.loadNpmTasks( 'grunt-banana-checker' ); + grunt.loadNpmTasks( 'grunt-jscs' ); + grunt.loadNpmTasks( 'grunt-jsonlint' ); + grunt.loadNpmTasks( 'grunt-karma' ); + + var wgServer = process.env.MW_SERVER, + wgScriptPath = process.env.MW_SCRIPT_PATH; + + grunt.initConfig( { + pkg: grunt.file.readJSON( 'package.json' ), + jshint: { + options: { + jshintrc: true + }, + all: [ + '*.js', + '{includes,languages,resources,skins,tests}/**/*.js' + ] + }, + jscs: { + all: [ + '<%= jshint.all %>', + // Auto-generated file with JSON (double quotes) + '!tests/qunit/data/mediawiki.jqueryMsg.data.js', + // Skip functions are stored as script files but wrapped in a function when + // executed. node-jscs trips on the would-be "Illegal return statement". + '!resources/src/*-skip.js' + + // Exclude all files ignored by jshint + ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) { + // Filter out empty lines + if ( pattern.length && pattern[0] !== '#' ) { + patterns.push( '!' + pattern ); + } + return patterns; + }, [] ) ) + }, + jsonlint: { + all: [ + '.jscsrc', + '{languages,maintenance,resources}/**/*.json', + 'package.json' + ] + }, + banana: { + core: 'languages/i18n/', + api: 'includes/api/i18n/', + installer: 'includes/installer/i18n/' + }, + watch: { + files: [ + '<%= jscs.all %>', + '<%= jsonlint.all %>', + '.jshintignore', + '.jshintrc' + ], + tasks: 'test' + }, + karma: { + options: { + proxies: ( function () { + var obj = {}; + // Set up a proxy for requests to relative urls inside wgScriptPath. Uses a + // property accessor instead of plain obj[wgScriptPath] assignment as throw if + // unset. Running grunt normally (e.g. npm test), should not fail over this. + // This ensures 'npm test' works out of the box, statically, on a git clone + // without MediaWiki fully installed or some environment variables set. + Object.defineProperty( obj, wgScriptPath, { + enumerable: true, + get: function () { + if ( !wgServer ) { + grunt.fail.fatal( 'MW_SERVER is not set' ); + } + if ( !wgScriptPath ) { + grunt.fail.fatal( 'MW_SCRIPT_PATH is not set' ); + } + return wgServer + wgScriptPath; + } + } ); + return obj; + }() ), + files: [ { + pattern: wgServer + wgScriptPath + '/index.php?title=Special:JavaScriptTest/qunit/export', + watched: false, + included: true, + served: false + } ], + frameworks: [ 'qunit' ], + reporters: [ 'dots' ], + singleRun: true, + autoWatch: false + }, + main: { + browsers: [ 'Chrome' ] + }, + more: { + browsers: [ 'Chrome', 'Firefox' ] + } + } + } ); + + grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] ); + grunt.registerTask( 'qunit', 'karma:main' ); + + grunt.registerTask( 'test', ['lint'] ); + grunt.registerTask( 'default', 'test' ); +}; diff --git a/package.json b/package.json new file mode 100644 index 0000000000..101fcd9bdb --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "mediawiki", + "version": "0.0.0", + "scripts": { + "test": "grunt test" + }, + "devDependencies": { + "grunt": "0.4.2", + "grunt-banana-checker": "0.2.0", + "grunt-contrib-jshint": "0.10.0", + "grunt-contrib-watch": "0.6.1", + "grunt-jscs": "0.8.1", + "grunt-jsonlint": "1.0.4", + "grunt-karma": "0.9.0", + "karma": "0.12.28", + "karma-chrome-launcher": "0.1.7", + "karma-firefox-launcher": "0.1.3", + "karma-qunit": "0.1.4", + "qunitjs": "1.15.0" + } +} diff --git a/tests/frontend/Gruntfile.js b/tests/frontend/Gruntfile.js deleted file mode 100644 index fd89e56bfe..0000000000 --- a/tests/frontend/Gruntfile.js +++ /dev/null @@ -1,117 +0,0 @@ -/*! - * Grunt file - */ - -/*jshint node:true */ -module.exports = function ( grunt ) { - grunt.loadNpmTasks( 'grunt-contrib-jshint' ); - grunt.loadNpmTasks( 'grunt-contrib-watch' ); - grunt.loadNpmTasks( 'grunt-banana-checker' ); - grunt.loadNpmTasks( 'grunt-jscs' ); - grunt.loadNpmTasks( 'grunt-jsonlint' ); - grunt.loadNpmTasks( 'grunt-karma' ); - - grunt.file.setBase( __dirname + '/../..' ); - - var wgServer = process.env.MW_SERVER, - wgScriptPath = process.env.MW_SCRIPT_PATH; - - grunt.initConfig( { - pkg: grunt.file.readJSON( __dirname + '/package.json' ), - jshint: { - options: { - jshintrc: true - }, - all: [ - '*.js', - '{includes,languages,resources,skins,tests}/**/*.js' - ] - }, - jscs: { - all: [ - '<%= jshint.all %>', - // Auto-generated file with JSON (double quotes) - '!tests/qunit/data/mediawiki.jqueryMsg.data.js', - // Skip functions are stored as script files but wrapped in a function when - // executed. node-jscs trips on the would-be "Illegal return statement". - '!resources/src/*-skip.js' - - // Exclude all files ignored by jshint - ].concat( grunt.file.read( '.jshintignore' ).split( '\n' ).reduce( function ( patterns, pattern ) { - // Filter out empty lines - if ( pattern.length && pattern[0] !== '#' ) { - patterns.push( '!' + pattern ); - } - return patterns; - }, [] ) ) - }, - jsonlint: { - all: [ - '.jscsrc', - '{languages,maintenance,resources}/**/*.json', - 'tests/frontend/package.json' - ] - }, - banana: { - core: 'languages/i18n/', - api: 'includes/api/i18n/', - installer: 'includes/installer/i18n/' - }, - watch: { - files: [ - '<%= jscs.all %>', - '<%= jsonlint.all %>', - '.jshintignore', - '.jshintrc' - ], - tasks: 'test' - }, - karma: { - options: { - proxies: ( function () { - var obj = {}; - // Set up a proxy for requests to relative urls inside wgScriptPath. Uses a - // property accessor instead of plain obj[wgScriptPath] assignment as throw if - // unset. Running grunt normally (e.g. npm test), should not fail over this. - // This ensures 'npm test' works out of the box, statically, on a git clone - // without MediaWiki fully installed or some environment variables set. - Object.defineProperty( obj, wgScriptPath, { - enumerable: true, - get: function () { - if ( !wgServer ) { - grunt.fail.fatal( 'MW_SERVER is not set' ); - } - if ( !wgScriptPath ) { - grunt.fail.fatal( 'MW_SCRIPT_PATH is not set' ); - } - return wgServer + wgScriptPath; - } - } ); - return obj; - }() ), - files: [ { - pattern: wgServer + wgScriptPath + '/index.php?title=Special:JavaScriptTest/qunit/export', - watched: false, - included: true, - served: false - } ], - frameworks: [ 'qunit' ], - reporters: [ 'dots' ], - singleRun: true, - autoWatch: false - }, - main: { - browsers: [ 'Chrome' ] - }, - more: { - browsers: [ 'Chrome', 'Firefox' ] - } - } - } ); - - grunt.registerTask( 'lint', ['jshint', 'jscs', 'jsonlint', 'banana'] ); - grunt.registerTask( 'qunit', 'karma:main' ); - - grunt.registerTask( 'test', ['lint'] ); - grunt.registerTask( 'default', 'test' ); -}; diff --git a/tests/frontend/package.json b/tests/frontend/package.json deleted file mode 100644 index 101fcd9bdb..0000000000 --- a/tests/frontend/package.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "name": "mediawiki", - "version": "0.0.0", - "scripts": { - "test": "grunt test" - }, - "devDependencies": { - "grunt": "0.4.2", - "grunt-banana-checker": "0.2.0", - "grunt-contrib-jshint": "0.10.0", - "grunt-contrib-watch": "0.6.1", - "grunt-jscs": "0.8.1", - "grunt-jsonlint": "1.0.4", - "grunt-karma": "0.9.0", - "karma": "0.12.28", - "karma-chrome-launcher": "0.1.7", - "karma-firefox-launcher": "0.1.3", - "karma-qunit": "0.1.4", - "qunitjs": "1.15.0" - } -}