In my Laravel project, I want to run phpunit for a single file, like this one:
$ composer run-script test tests/Unit/Services/OrderServiceTest.php
Here is my composer setup:
"scripts": { "test": [ "@testenv", "@phpunit" ], "testenv": [ "php artisan config:cache --env=testing", "php artisan config:clear" ], "phpunit": [ "php ./vendor/phpunit/phpunit/phpunit --" ] }
However, I’m running into this error:
www@287dd7480e22:/var/www$ composer run-script test tests/Unit/Services/OrderServiceTest.php
php artisan config:cache –env=testing ‘tests/Unit/Services/OrderServiceTest.php’
Too many arguments, expected arguments “command”.
Notice:
- I’ve seen this post: How do you pass an argument to a composer script from the command line?. But either the solution (adding
--
at the end of custom composer script) does not work for my case or I do not understand it properly. - If I do not pass an argument, the script runs without a problem. (i.e. run phpunit for all test files)
Advertisement
Answer
According to this comment in composer repository:
There is no way to pass arguments only to one of the sub-scripts if you do a script group and call multiple things..