gulp-phpunit

PHPUnit plugin for Gulp

gulp-phpunit

PHPUnit plugin for gulp 3

First, install gulp-phpunit as a development dependency:

npm install --save-dev gulp-phpunit

Then, add it to your gulpfile.js:

var phpunit = require('gulp-phpunit');
 
// option 1: default format 
gulp.task('phpunit', function() {
    gulp.src('phpunit.xml').pipe(phpunit());
});
 
// option 2: with defined bin and options 
gulp.task('phpunit', function() {
    var options = {debug: false};
    gulp.src('phpunit.xml').pipe(phpunit('./vendor/bin/phpunit',options));
});
 
 
// Note: Windows OS may require double backslashes if using other than default location (option 1) 
gulp.task('phpunit', function() {
  gulp.src('phpunit.xml').pipe(phpunit('.\\path\\to\\phpunit'));
});
 
// option 3: supply callback to integrate something like notification (using gulp-notify) 
 
var gulp = require('gulp'),
 notify  = require('gulp-notify'),
 phpunit = require('gulp-phpunit'),
 _       = require('lodash');
 
  gulp.task('phpunit', function() {
    gulp.src('phpunit.xml')
      .pipe(phpunit('', {notify: true}))
      .on('error', notify.onError(testNotification('fail', 'phpunit')))
      .pipe(notify(testNotification('pass', 'phpunit')));
  });
 
function testNotification(statuspluginNameoverride) {
    var options = {
        title:   ( status == 'pass' ) ? 'Tests Passed' : 'Tests Failed',
        message: ( status == 'pass' ) ? '\n\nAll tests have passed!\n\n' : '\n\nOne or more tests failed...\n\n',
        icon:    __dirname + '/node_modules/gulp-' + pluginName +'/assets/test-' + status + '.png'
    };
    options = _.merge(options, override);
  return options;
}
 
 

Type: String

The path to the desired PHPUnit binary

  • If not supplied, the defeault path will be ./vendor/bin/phpunit

Type: Boolean

Debug mode enabled (enables --debug switch as well)

Type: Boolean

Configures PHPUnit command but only echo call (doesnt actually execute command)

Type: Boolean

Clear console before executing command

Type: Boolean

Executes dry run (doesn't actually execute tests, just echo command that would be executed)

Type: String

Define a specific class for testing (supply full path to test class)

Type: String

Define a specific test suite for testing (supply full path to test suite)

Type: String

Define a path to an xml configuration file (supply full path and filename)

Type: Boolean

Call user supplied callback to handle notification

Type: String

Generate code coverage report in Clover XML format.

Type: String

Generate code coverage report in Crap4J XML format.

Type: String

Generate code coverage report in HTML format.

Type: String

Export PHP_CodeCoverage object to file.

Type: String

Generate code coverage report in text format. -- Default: Standard output.

Type: String

Generate code coverage report in PHPUnit XML format.

Type: String

Log test execution in JUnit XML format to file.

Type: String

Log test execution in TAP format to file.

Type: String

Log test execution in JSON format.

Type: String

Write agile documentation in HTML format to file.

Type: String

Write agile documentation in Text format to file.

Type: String

Filter which tests to run.

Type: String

Filter which testsuite to run.

Type: String

Only runs tests from the specified group(s).

Type: String

Exclude tests from the specified group(s).

Type: String

List available test groups.

Type: String

Only search for test in files with specified suffix(es). Default: Test.php,.phpt

Type: String

Be strict about tests that do not test anything.

Type: Boolean

Be strict about unintentionally covered code.

Type: Boolean

Be strict about output during tests.

Type: Boolean

Enforce time limit based on test size.

Type: Boolean

Disallow @todo-annotated tests.

Type: Boolean

Run tests in strict mode (enables all of the above).

Type: Boolean

Run each test in a separate PHP process.

Type: Boolean

Do not backup and restore $GLOBALS for each test.

Type: Boolean

Backup and restore static attributes for each test.

Type: Boolean

Use colors in output.

Type: Boolean

Write to STDERR instead of STDOUT.

Type: Boolean

Stop execution upon first error.

Type: Boolean

Stop execution upon first error or failure.

Type: Boolean

Stop execution upon first risky test.

Type: Boolean

Stop execution upon first incomplete test.

Type: Boolean

Stop execution upon first skipped test.

Type: String

TestSuiteLoader implementation to use.

Type: Integer | String

Runs the test(s) repeatedly.

Type: Boolean

Report test execution progress in TAP format.

Type: Boolean

Report test execution progress in TestDox format.

Type: String

TestSuiteListener implementation to use.

Type: String

A "bootstrap" PHP file that is run before the tests.

Type: String

Read configuration from XML file.

Type: Boolean

Ignore default configuration file (phpunit.xml).

Type: Boolean

Prepend PHP's include_path with given path(s).

  • 0.7.0 Added Plugin Resources

    • Added new icons for pass and fail which can be used by notify plugin (see example below for usage) /assets/test-pass.png /assets/test-fail.png
    • Added missing 'verbose' flag to PHPUnit command call (option existed but wasn't used).
  • 0.6.3 Updated general options

    • Changed dry run output text color
  • 0.6.2 Updated general options

    • Added dryRun option (echo constructed PHPUnit command) sets opt.debug true
  • 0.6.1 Updated README to include all udpated options

  • 0.6.0 Updated to support PHPUnit 4.x and new options

    • Added Code Coverage Options

      • coverageClover
      • coverageCrap4j
      • coverageHtml
      • coveragePHP
      • coverageText
      • coverageXML
    • Added Logging Options

      • logJunit
      • logTap
      • logJson
      • testdoxHtml
      • testdoxText
    • Added Test Selection Options

      • filter
      • testsuite
      • group
      • excludeGroup
      • testSuffix
    • Added Test Execution Options

      • reportUseless
      • strictCoverage
      • disallowTestOutput
      • enforceTimeLimit
      • strict
      • isolation
      • noGlobals
      • staticBackup
      • stopOnError
      • stopOnFailure
      • stopOnRisky
      • stopOnSkipped
      • displayDebug
      • testdox
      • tap
    • Added Configuration Options

      • includePath
      • noColor
      • noConfig
  • 0.5.3 Updated dev dependencies to use latest builds

  • 0.5.2: Small adjustments and Configuration File Support (thanks @wayneashleyberry)

    • Added Configuration File Support
    • Removed Node 0.9 from Travis support
  • 0.5.1: Added CI Support

    • Added .travis support
    • Added .circle support
  • 0.5.0: Complete refactoring and cleanup (thanks @taai)

    • Simplified code and callback handling
    • Addressed additional issues related to dependecies
  • 0.4.2: Added additional tests

  • 0.4.1: Code Cleanup

    • Removed calls to console.log -> gutil.log (playing nice in the playground)
    • Fixed issue with calling as dependency task (thanks @taai)
  • 0.4.0: Added check for invalid PHPUnit binary path as first parameter

    • Safeguard to assure options is not passed as first parameter
  • 0.3.0: Refactoring

    • Refactored color console message to use gulp-util instance instead of color plugi
  • 0.2.1: Update Default Command - Windows Fix

    • Fixed default command when using windows (thx @imissions)
  • 0.1.0:

    • Enhanced debug output (supporting color)
  • 0.0.4:

    • Updated version number, error publishing full archive to npm in 0.0.3 update
  • 0.0.3:

    • Added support return calling user supplied callback to handle notification
  • 0.0.2:

    • Fixed issue which caused tests to be run multiple times
    • Added 'clear' flag to clear console before running tests
    • Added 'testClass' option to define a specific class to test
    • Added './vendor/bin/phpunit' as default bin if no path supplied
  • 0.0.1: Initial Release

gulp-phpunit written by Mike Erickson

E-Mail: codedungeon@gmail.com

Twitter: @codedungeon

Website: codedungeon.org