PHP
testing

PHP: テストでglob関数にfalseを返させるテクニック

PHPのglob関数falseを返す場合がある。

PHP__glob_-_Manual.png

PHPUnitなどでglob関数を含むコードをテストしているとき、このケースを満たすためにfalseがどうしても欲しい場合がある。しかし、よっぽどのことがない限りfalseに出会うことはない。手元の環境で実行してみた限りでは、マッチするファイルが見つからなくてもfalseが返ることはなかった。

PHPのソースコードを読んで、唯一手軽にfalseを返させる方法は、極端に長いパターンを与えることだとわかった。

var_dump(glob(str_repeat('.', 1024)));
Warning: glob(): Pattern exceeds the maximum allowed length of 1024 characters in /../test.php on line 3
bool(false)

つまり、テストで意図的にfalseを返させるには、globに長い文字列を渡すとよい。