Môj predchádzajúci Laravel test watcher som úspešne používal veľmi dlho, keď som bol na Linuxe. Teraz na Macu však nefunguje, pretože Mac nepodporuje inotifywait.

Mac však podporuje niečo podobné, čo sa nazýva fswatch, nainštalovateľné cez Brew:

brew install fswatch

Funguje to však trochu inak ako inotifywait, aj syntax sa líši, takže nie je to priama náhrada. Pomerne rýchlo som to dokázal rozbehať tak, aby spúšťalo všetky testy pri akejkoľvek zmene súvisiacej s PHP, ale tie na mojom projekte trvajú niekoľko sekúnd a mal som problém prísť na to, ako sledovať len jeden súbor s fswatch. Keď som na to prišiel, rozhodol som sa to tu zdieľať, pretože som jednoduchým vyhľadávaním nikde inde túto informáciu nenašiel:

fswatch --recursive --exclude="database.sqlite" \
  ./resources ./tests ./app ./routes ./database | xargs -n1 sh -c \
  './vendor/bin/sail exec -T laravel.test php artisan test --ansi tests/Feature/MyTest.php'

Na mojom stroji to funguje perfektne, dokonale napodobňujúc predchádzajúcu funkcionalitu inotifywait, na ktorú som bol zvyknutý. Nezabudnite na prepínač --ansi, inak môžu chýbať farby. Užívajte!

Odkazy #