Make WordPress Core

Ticket #35557: 35557.3.diff

File 35557.3.diff, 3.0 KB (added by ericlewis, 9 years ago)
  • Gruntfile.js

     
    11/* jshint node:true */
    22module.exports = function(grunt) {
    33        var path = require('path'),
     4                gitorsvn = require('git-or-svn'),
    45                SOURCE_DIR = 'src/',
    56                BUILD_DIR = 'build/',
    67                autoprefixer = require('autoprefixer'),
     
    654655                grunt.task.run( '_' + this.nameArgs );
    655656        } );
    656657
    657         grunt.registerTask( 'precommit', 'Runs front-end dev/test tasks in preparation for a commit.', [
    658                 'postcss:core',
    659                 'imagemin:core',
    660                 'browserify',
    661                 'jshint:corejs',
    662                 'uglify:bookmarklet',
    663                 'qunit:compiled'
    664         ] );
     658        grunt.registerTask( 'precommit', 'Runs test and build tasks in preparation for a commit', function() {
     659                var done = this.async();
    665660
     661                // Figure out what tasks to run based on what files have been modified.
     662                function enqueueTestingTasksForModifiedFiles( filesModified ) {
     663                        var taskList = ['imagemin:core'];
     664                        if ( /src.*\.js/.test( filesModified ) ) {
     665                                grunt.log.write( 'JavaScript source files modified, will run JavaScript tests.');
     666                                taskList = taskList.concat( ['browserify', 'jshint:corejs', 'uglify:bookmarklet', 'qunit:compiled'] );
     667                        }
     668                        if ( /src.*\.css/.test( filesModified ) ) {
     669                                grunt.log.write( 'CSS source files modified, will run CSS tests.');
     670                                taskList.push( 'postcss:core' );
     671                        }
     672                        if ( /src.*\.php/.test( filesModified ) ) {
     673                                grunt.log.write( 'PHP source files modified, will run PHP tests.');
     674                                taskList.push( 'phpunit' );
     675                        }
     676                        grunt.task.run( taskList );
     677                        done();
     678                }
     679                gitorsvn( __dirname, function(gitorsvn) {
     680                        if ( gitorsvn === 'svn' ) {
     681                                grunt.util.spawn(
     682                                        {
     683                                                cmd: 'svn',
     684                                                args: ['diff', '--summarize']
     685                                        },
     686                                        function(error, result, code) {
     687                                                if ( code !== 0 ) {
     688                                                        grunt.fail.warn( 'The `svn diff --summarize` command returned a non-zero exit code.', code );
     689                                                }
     690                                                enqueueTestingTasksForModifiedFiles( result.stdout );
     691                                        }
     692                                );
     693                        } else if ( gitorsvn === 'git' ) {
     694                                grunt.util.spawn(
     695                                        {
     696                                                cmd: 'git',
     697                                                args: ['diff', '--name-only']
     698                                        },
     699                                        function(error, result, code) {
     700                                                if ( code !== 0 ) {
     701                                                        grunt.fail.warn( 'The `git diff --name-only` command returned a non-zero exit code.', code );
     702                                                }
     703                                                enqueueTestingTasksForModifiedFiles( result.stdout );
     704                                        }
     705                                );
     706                        } else {
     707                                grunt.log.write( 'This WordPress install is not under version control, no tests will be run.' );
     708                        }
     709                });
     710        });
     711
    666712        grunt.registerTask( 'copy:all', [
    667713                'copy:files',
    668714                'copy:wp-admin-css-compat-rtl',
  • package.json

     
    1010  "license": "GPL-2.0+",
    1111  "devDependencies": {
    1212    "autoprefixer": "~6.1.0",
     13    "git-or-svn": "~0.1.0",
    1314    "grunt": "~0.4.5",
    1415    "grunt-browserify": "~4.0.1",
    1516    "grunt-contrib-clean": "~0.6.0",