Git Pre-commit Hook to Auto Run PHPUnit

November 20 2015, 10:53am

Never push up broken tests again. Using a pre-commit hook for git, when you type in git commit git will automatically run your unit tests to make sure nothing is broken with your recent changes.

Create a file called pre-commit in your project root at ./.git/hooks/ and put the following code inside it:

printf("%sGit pre-commit hook %1\$s", PHP_EOL);
$projectName = basename(getcwd());
exec('vendor/bin/phpunit', $output, $returnCode);
if ($returnCode !== 0) {
    $minimalTestSummary = array_pop($output);
    printf("Test suite for %s failed: ", $projectName);
    printf("( %s ) %s%2\$s", $minimalTestSummary, PHP_EOL);
    return false;
printf("All tests for %s passed.%s%2\$s", $projectName, PHP_EOL);
return true;

The above is based on this gist but updated to use the copy of phpunit from your project's composer.