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のメールアドレスと同一なら同じ人物と見なして緑にするらしい。

これ知らなくて、他人のコードに貢献したときに芝が生えると思ってたので、半年くらいの芝が消失したことが判明した。まあ、ほとんどウェブ日記だから関係ないといえばないのだが。