ぐらめぬ・ぜぷつぇんのはてダ(2007 to 2011)

2007年~2011年ごろまで はてなダイアリー に書いてた記事を引っ越してきました。

Stagehand_TestRunner に SimpleTest のサポートを追加してみる。

Stagehand_TestRunner : http://trac.piece-framework.com/sh-testrunner/wiki/ja/Start
SimpleTest : http://www.lastcraft.com/simple_test.php

・・・いえ、需要がどれほどあるのか、という事になってしまうんですが。

単純な話ですね、PHP4とPHP5で、今のところ"最新バージョン"でもって普通に共用できるのが強みだと思うのですよ。
例えばPHPUnitの最新版はPHP5でないと動かないじゃないですか。となると、PHP4でTestCaseを作りたい場合は PHPUnitの1を使うのを書いて、PHP5でTestCaseを実行したい場合はPHPUnitの3用のを書かなくちゃいけないじゃないですか。多分。
SimpleTestであれば、PHP4/5とも現時点で最新の 1.0.0 で同じ書き方で動きますので、PHP4/5の両方でUnitTestを流したい、例えば両方の動作環境をサポートするべきであるライブラリなどは、やっぱりSimpleTestがあると有り難いわけです。
というかPseudo_BlockやXhwlayで楽したいだけなのですが。


前置き長すぎ。で、本題。

Stagehand_TestRunner自体は簡潔で、ソースも読んで理解できるレベルでした。ですので、SimpleTestサポートの追加もクイックハックとまでは行きませんが、コピペで動かすことができました。

http://www.glamenv-septzen.net/medias/Stagehand_TestRunner-1.0.0_SimpleTest1.patch

上のパッチが、Stagehand_TestRunner の 1.0.0 に、SimpleTest の 1.0.0 のサポートを追加する為のものです。
http://pear.piece-framework.com/index.php?package=Stagehand_TestRunner
などからDLできるtarボールに直接パッチを当てる形にして下さい。diffは、Cygwinのdiffで、diff -urN で取っています。

ツッコミ歓迎中。

追記
TestRunner.phpの修正が一部バグってた・・・。ので、patchを作り直しました。

全部のテスト数(assertとか)は、SimpleTestの場合、SimpleReporter使っていればgetTestCaseCount()で採れると思っていたんだけど、違ってた。全部のテスト数については、先にpassとfailとerrorをとっておき、それの合計と言うことでごまかす。しかない。

Stagehand/TestRunner.phpの200行目前後、run()した後の$resultより各種値を取得する箇所が以下のようになっていないと、最新パッチではありません。前述のURLより最新のを落として適用して下さい。

} elseif ($GLOBALS['STAGEHAND_TESTRUNNER_PHPUnit_Version'] == 'SimpleTest1') {
    $passes = $result->getPassCount();
    $failures = $result->getFailCount();
    $errors = $result->getExceptionCount();
    $runs = $passes + $failures + $errors;
    $text = '';
}