log > PHPUnitでphpunit.xmlとbootstrap.php,Github current streak反映
PHPUnitでphpunit.xmlとbootstrap.php
PHPUnitには、テスト数が多くなったときなどに使える設定ファイルがある。phpunitコマンドを使うディレクトリ(通常はトップディレクトリ)にphpunit.xmlまたはphpunit.xml.distをおいておけば、phpunitコマンドで自動で読み込んで設定に反映してくれる。
設定ファイルを使うことで、余計なテストを実行せずに済ませることなどができる。また、オプションを設定ファイルへ移すことも可能。
PHPUnitを自動化するために作成することにした。だが、オプションの中にbootstrapというものがあり、それが何を意味するのかよくわからなかった。PHPUnitのサイトを見ても、テストの前に実行される "ブートストラップ" PHP ファイルを指定します。
とだけ書かれているので調べることにした。
結果、bootstrap.phpでクラスのローダーを作るというのはわかったが、どのクラスの何を読み込むのかがよくわからないままだった。この辺に関して何も資料がないため、他のOSSを読み込んだりしたがわからなかったので適当に書いた。var_dumpしたらPHPUnit関連が読み込まれていた。
<?php
// bootstrap.php
spl_autoload_register(
function ($classname) {
$new_classname = end(explode('\\', $classname));
$filepath = __DIR__ . '/classes/' . $new_classname . '.php';
if (is_readable($filepath)) {
require $filepath;
}
}
);
require_once __DIR__ . '/../vendor/autoload.php';
// テスト対象がクラスではなかったため、index.phpを読み込んでいる
require __DIR__ . '/../index.php';
// bootstrap.xml
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="./tests/bootstrap.php"
colors="true">
<testsuites>
<testsuite name="tests">
<directory suffix=".php">./tests/</directory>
</testsuite>
</testsuites>
</phpunit>
bootstrap.phpを書き始めたときは、エラーが出ずにNo tests executed!
となっていたが、上記のように書いたらphpunit
コマンドだけで実行できた。autoloadがうまくいってなかったためだと思われる。
Github current streak
全然気にしてなかったんだけど、Githubはgitの設定項目であるuser.emailを見てGtihubのメールアドレスと同一なら同じ人物と見なして緑にするらしい。
これ知らなくて、他人のコードに貢献したときに芝が生えると思ってたので、半年くらいの芝が消失したことが判明した。まあ、ほとんどウェブ日記だから関係ないといえばないのだが。