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 = ''; }