symfony 1系でカバレッジをだす

このエントリは忘備録的な感じです.
本当は違うところの調査がしたかったのだった.


symfony 1系では,テストのカバレッジを出すタスクがあるんだけど,
Jenkins で見れるフォーマットじゃない感じ.


rsPHPUnitLimePlugin ってのがあってよしなにしてくれるらしい.


とりあえず入れてみる*1

$ git submodule add https://github.com/digitalkaoz/rsPHPUnitLimePlugin.git plugins/rsPHPUnitLimePlugin
$ vi config/ProjectConfiguration.class.php
$ git diff
diff --git a/config/ProjectConfiguration.class.php b/config/ProjectConfiguration.class.php
index 24e9ec0..d1cf7e5 100644
--- a/config/ProjectConfiguration.class.php
+++ b/config/ProjectConfiguration.class.php
@@ -8,5 +8,6 @@ class ProjectConfiguration extends sfProjectConfiguration
   public function setup()
   {
     $this->enablePlugins('sfDoctrinePlugin');
+    $this->enablePlugins('rsPHPUnitLimePlugin');
   }
 }


PHP_CodeCoverage が要求されるので入れる.
けどPHP 5.2.6 を使ってたら面倒だった.*2
PHP_CodeCoverage とかのplugin が5.2.7 を要求してきたので
手動で入れたらとりあえず動いてるみたい.
あとclass redefine とか言われたので修正

$ pear channel-discover pear.phpunit.de
$ cd ~/work
$ git clone https://github.com/sebastianbergmann/php-code-coverage.git
$ git clone https://github.com/sebastianbergmann/php-token-stream.git
$ cd /usr/lib/php
$ mkdir PHP
$ cd PHP
$ ln -s ~/work/php-code-coverage/PHP/* .
$ ln -s ~/work/php-token-stream/PHP/* .
$ pear install phpunit/File_Iterator
$ pear install phpunit/PHP_TokenStream
$ pear install phpunit/PHPUnit
$ pear install phpunit/Text_Template
$ cp PHPUnit/Framework.php{,.org}
$ vi PHPUnit/Frameworkk.php
$ diff PHPUnit/Framework.php{.org,}
61c61
< require 'PHPUnit/Framework/TestListener.php';
---
> require_once 'PHPUnit/Framework/TestListener.php';


これでJenkins のCloverPHP plugin から見れるようになった.


これだとrsPHPUnitLimePlugin のcoverage が出ちゃって面白くないので無効にしたいところ.

2011-08-13 追記

lib/test/LimeCodeCoverage.php の$blackList を編集すればいいんだけど
config とかで定義できるようにしておきたい気もするけどまだやってない感じ.

*1:普通にplugin:install でいいです

*2:5.2.7以降の人はpear installすればいいと思う.試してない