ほげほげ見聞録

技術メモ、備忘録、使い方はそのうち覚える

グローバルインストールしたPHPUnitをcygwinから実行


自前のフレームワーク使ってたり…テストコードを追加すると注意されたり…してプロジェクトにインストールできない、そんな時もテストしたいよねって場合に使うのがグローバルインストールしたPHPUnit
いざグローバルインストールしたけど、cygwinからPHPUnitを実行できないという問題が発生したので解決メモ。

状態

phpunit.pharを落としてきたはいいけど、cygwinからは実行できずコマンドプロンプトからだと実行可能。
PHPUnit マニュアル – 第1章 PHPUnit のインストール

問題

cygwinだと以下のエラーが発生する。

$ phpunit --debug test/setup.php
Could not open input file: /cygdrive/d/bin/phpunit

phpunitコマンドを認識できていないらしい?

権限を変更?

chmod 755にしてみるも変わらずエラー。

.bash_profileにalias追加?

「【cygwinパス】\home\【ユーザ】.bash_profile」に以下を追加すると実行可能になるという情報を見かける。

alias phpunit="/cygdrive/d/bin/phpunit D:/bin/phpunit"

Cygwin and PHPUnit: Could not open input file: /cygdrive/c/xampp/php/phpunit - Stack Overflow

追加したけど変わらずエラーが出る。

.bashrcにalias追加

aliasの設定は「【cygwinパス】\home\【ユーザ】.bashrc」に追加するという情報を見かける。
上の項目で追加したaliasをこちらに追加すると、PHPUnitが実行された。

ちなみにデフォルトだと色は付かないので、--colors=alwaysオプションを指定する必要あり。
最終的には以下のaliasを追加した。

alias phpunit="D:/bin/phpunit --colors"

これだとデフォルトで色が付く。

alias便利

案件ごとにPHPのバージョンが変わるので、そんな時にPHPUnitもバージョン変更する必要がある。
こうしておけば、プロジェクトのsrcフォルダでphpunitの切り替えが楽。

alias phpunit7="D:/xampp_7.2.4/php/php.exe vendor/phpunit/phpunit/phpunit"



cygwinの.bash_profileと.bashrcの違い

マニュアルと各ファイルの説明を読んだので追記。
マニュアル内に、.bashrcでaliasを設定可能とある
Customizing bash

.bash_profileはファイル内に、ログインシェルの時に実行される…という説明があった。

.bashrcがある場合は実行シェル内でsource .bashrcするので、結局.bashrcに書いておけばいいようだ

余談

.bash_profileも.bashrcも、cygwinを再起動しないと変更した設定が反映されなかった。
変更したのにナンデ!? となるので毎回cygwinを終了させる必要がある。