hot/phpunit-runner
Requirements: php, phpunit, git, find
, (*1)
Watcher for php classes and tests
bin/hot-phpunit-runner --config=app/phpunit.xml --watch
, (*2)
- When you change entity
XXXClass
this watcher looking for and run tests for this entity.
- When you change test for entity
XXXClassTest
this watcher run this test too.
PHPUnit HotRunner has been started
> phpunit -c app/phpunit.xml ./src/.../....../XXXClassTest.php
PHPUnit 3.7.21 by Sebastian Bergmann.
Configuration read from /Users/slava/project/xxx/app/phpunit.xml
....
Time: 1 second, Memory: 10.00Mb
OK (4 tests, 9 assertions)
[OK]
[notice] If you run bin/hot-phpunit-runner
without any options then you
run all tests (or test for entity) based on git status
(one time).
FYI, runner will not run tests next time. ( result is cached for watcher ), (*3)
Default running looks like:
bin/hot-phpunit-runner --watch
bin/hot-phpunit-runner --config=app/phpunit.xml --watch
Options
--config=app/phpunit.xml # custom phpunit config file
--phpunit-options="-c app/ --testdox" # custom phpunit options (alternative for `--config`)
--phpunit-bin=bin/phpunit # custom path to phpunit
--watch # watcher mode
--period=2 # sec. watcher period
--clean # this option remove cached result and re-test full
--test-similarity=100 # percentage of similarity 0..100 (entity vs test)
--coverage=coverage.xml # collect coverage and write Clover xml
--on-pass="echo 'pass callback';" # CLI command after pass
--on-fail="echo 'fail callback';" # CLI command after fail
--notify # notifications # OSX / UBUNTU notifications
Install
- composer:
"hot/phpunit-runner": "dev-master"
- http://packagist.org/packages/hot/phpunit-runner
- https://github.com/slavahatnuke/hot-phpunit-runner
Workflows
-
bin/hot-phpunit-runner --watch
# default watcher
-
bin/hot-phpunit-runner --config=app/phpunit.xml --watch
# with phpunit config file
-
bin/hot-phpunit-runner --config=app/phpunit.xml --phpunit-bin=bin/phpunit --watch
# with custom phpunit
-
bin/hot-phpunit-runner --clean
# clear cache and re-test changeset (when watcher working)
-
bin/hot-phpunit-runner --config=app/phpunit.xml --watch --period=1
# with phpunit config hot watcher with --period=1
-
bin/hot-phpunit-runner --config=app/phpunit.xml --watch &
# with phpunit config file and with &
(background process)
-
bin/hot-phpunit-runner --watch --test-similarity=50
# default watcher with --test-similarity=50
# watcher can not find my tests. I need to reduce the similarity.
-
bin/hot-phpunit-runner --options="-c app/ --testdox" --watch
# watcher with --options="-c app/ --testdox"
# with custom phpunit options
-
bin/hot-phpunit-runner --config=app/phpunit.xml --coverage=coverage.xml --watch
# with --config=app/phpunit.xml --coverage=coverage.xml
. collect coverage just for changes
-
bin/hot-phpunit-runner --notify --watch
# OSX / UBUNTU notifications
PhpStorm
Highlight coverage in PhpStorm, (*4)
bin/hot-phpunit-runner --config=app/phpunit.xml --coverage=coverage.xml --watch
# required --config=app/phpunit.xml
phpunit config file, in this case runner collect coverage for changes, (*5)
plugin: download
wiki
home, (*6)
, (*7)
, (*8)
or, (*9)
, (*10)
Notifications
bin/hot-phpunit-runner --notify --watch
, (*11)
, (*12)
, (*13)
--notify
has dependents:, (*14)
- OSX:
terminal-notifier
https://github.com/alloy/terminal-notifier
- UBUNTU:
notify-send
man