Make WordPress Core

Ticket #35557: 35557.5.diff

File 35557.5.diff, 3.2 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',
     658        grunt.registerTask( 'precommit:core', [
     659                'imagemin:core'
     660        ] );
     661
     662        grunt.registerTask( 'precommit:js', [
    660663                'browserify',
    661664                'jshint:corejs',
    662665                'uglify:bookmarklet',
     
    663666                'qunit:compiled'
    664667        ] );
    665668
     669        grunt.registerTask( 'precommit:css', [
     670                'postcss:core'
     671        ] );
     672
     673        grunt.registerTask( 'precommit:php', [
     674                'phpunit'
     675        ] );
     676
     677        grunt.registerTask( 'precommit', 'Runs test and build tasks in preparation for a commit', function() {
     678                var done = this.async();
     679
     680                // Figure out what tasks to run based on what files have been modified.
     681                function enqueueTestingTasksForModifiedFiles( filesModified ) {
     682                        var taskList = ['precommit:core'];
     683                        if ( /src.*\.js/.test( filesModified ) ) {
     684                                grunt.log.write( 'JavaScript source files modified, will run JavaScript tests.\n');
     685                                taskList = taskList.concat( ['precommit:js'] );
     686                        }
     687                        if ( /src.*\.css/.test( filesModified ) ) {
     688                                grunt.log.write( 'CSS source files modified, will run CSS tests.\n');
     689                                taskList = taskList.concat( ['postcss:core'] );
     690                        }
     691                        if ( /src.*\.php/.test( filesModified ) ) {
     692                                grunt.log.write( 'PHP source files modified, will run PHP tests.\n');
     693                                taskList = taskList.concat( ['precommit:php'] );
     694                        }
     695                        grunt.task.run( taskList );
     696                        done();
     697                }
     698                gitorsvn( __dirname, function(gitorsvn) {
     699                        if ( gitorsvn === 'svn' ) {
     700                                grunt.util.spawn(
     701                                        {
     702                                                cmd: 'svn',
     703                                                args: ['status']
     704                                        },
     705                                        function(error, result, code) {
     706                                                if ( code !== 0 ) {
     707                                                        grunt.fail.warn( 'The `svn status` command returned a non-zero exit code.', code );
     708                                                }
     709                                                enqueueTestingTasksForModifiedFiles( result.stdout );
     710                                        }
     711                                );
     712                        } else if ( gitorsvn === 'git' ) {
     713                                grunt.util.spawn(
     714                                        {
     715                                                cmd: 'git',
     716                                                args: ['diff', '--name-only']
     717                                        },
     718                                        function(error, result, code) {
     719                                                if ( code !== 0 ) {
     720                                                        grunt.fail.warn( 'The `git diff --name-only` command returned a non-zero exit code.', code );
     721                                                }
     722                                                enqueueTestingTasksForModifiedFiles( result.stdout );
     723                                        }
     724                                );
     725                        } else {
     726                                grunt.log.write( 'This WordPress install is not under version control, no tests will be run.' );
     727                        }
     728                });
     729        });
     730
    666731        grunt.registerTask( 'copy:all', [
    667732                'copy:files',
    668733                '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",