I’ve used this little bash alias for many years to quickly run the tests inside of a project.
alias p=“vendor/bin/phpunit”
With this alias in place, I can run the tests by typing “p” on the CLI. Nice!
For a long time, everything was great! But then, Pest appeared on the scene. It’s an alternative test runner for PHP with a high focus on developer experience.
If you want to know more about Pest, check out the official documentation or the video course that I made on it.
To execute Pest, I introduced another bash alias.
alias pest=“vendor/bin/pest”
But having separate commands for PHPUnit and Pest is a bit cumbersome. I often switch projects, and with two testing commands, I have to think if I should use p or pest to run the tests.
Because I didn’t want to think about this (and because my muscle memory always let me type “p”), I’ve now replaced these two aliases with a single Bash function.
function p() {
if [ -f vendor/bin/pest ]; then
vendor/bin/pest “$@“
else
vendor/bin/phpunit “$@“
fi
}
With this function, I can type “p” inside any project to run the tests. The function will pick the right test runner for me. Sweet!
Because I often use the –filter flag to run a single test, I’ve also added this pf function.
function pf() {
if [ -f vendor/bin/pest ]; then
vendor/bin/pest –filter “$@“
else
vendor/bin/phpunit –filter “$@“
fi
}
Both the p and pf functions can be found in my dotfiles repository. You’ll find all settings that I use on the CLI in that repository. If you want to use the same settings as me, look at the readme in the repo to learn how to use them.