2012-02-23
もし FuelPHP のバグを見つけたら (6)〜Pull Request が本家に取り込まれたら
- もし FuelPHP のバグを見つけたら〜バグ報告の仕方
- もし FuelPHP のバグを見つけたら (2)〜バグ修正コードを Pull Request するための準備
- もし FuelPHP のバグを見つけたら (3)〜バグ修正コードを Pull Request する方法
- もし FuelPHP のバグを見つけたら (4)〜ドキュメントの修正を Pull Request する方法
- もし FuelPHP のバグを見つけたら (5)〜Pull Request 後の修正
の続きです。
前の記事を読んでいない場合は、先に読むことをお薦めします。
Pull Request の修正も完了し、送信した Pull Request が本家に取り込まれたら、あなたもれっきとしたコントリビュータです。
コントリビュータの一覧に名前が載っていることでしょう。
これで、あなたが修正したバグは永久になくなりました。もう、「何々がバグってる〜」みたいなツイートをする必要はありません。
Pull Request 用ブランチの削除
Pull Request 用のブランチ (ここでは fix_form) はもう必要ありません。削除しましょう。
ローカルのブランチを削除しましょう。まず、開発ブランチを最新にしておきます。
$ git checkout 1.1/develop $ git fetch upstream $ git merge upstream/1.1/develop
それではローカルのブランチを削除します。
$ git branch -d fix_form
リモート (GitHub 上) のブランチを削除します。
$ git push origin :fix_form
これで、Pull Request 用のブランチが完全に削除されました。めでたし、めでたし。
2012-02-20
もし FuelPHP のバグを見つけたら (5)〜Pull Request 後の修正
- もし FuelPHP のバグを見つけたら〜バグ報告の仕方
- もし FuelPHP のバグを見つけたら (2)〜バグ修正コードを Pull Request するための準備
- もし FuelPHP のバグを見つけたら (3)〜バグ修正コードを Pull Request する方法
- もし FuelPHP のバグを見つけたら (4)〜ドキュメントの修正を Pull Request する方法
の続きです。
前の記事を読んでいない場合は、先に読むことをお薦めします。
今日は、Pull Request 後にコア開発者などからコメントが付いて、Pull Request した変更を修正する場合です。
修正前の準備
まず、1.1/develop ブランチを最新の状態にします。
$ git checkout 1.1/develop $ git fetch upstream $ git merge upstream/1.1/develop
ログを確認すると、以下のように開発が進んでいます。
Pull Request 用のブランチ(ここでは fix_form)を rebase して最新状態を反映させましょう。-f オプションを忘れないように。
$ git checkout fix_form $ git rebase -f upstream/1.1/develop
First, rewinding head to replay your work on top of it...
Applying: improve Form::prep_value
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging classes/form/instance.php
Auto-merging tests/form.php
CONFLICT (content): Merge conflict in tests/form.php
Failed to merge in the changes.
Patch failed at 0001 improve Form::prep_value
When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To restore the original branch and stop rebasing run "git rebase --abort".
コンフリクトしましたので、エディタで開いて修正します。修正が完了したら、
$ git add tests/form.php $ git rebase --continue
として rebase を完了します。これで、Pull Request に修正を追加する準備ができました。
Pull Request の修正
普通に修正してコミットします。sign-off を忘れずに。
そして、GitHub に Pull Request 用のブランチを push します。-f オプションを忘れないように。
$ git push -f origin fix_form
push が完了すれば、Pull Request に自動的に反映されます。これで完了です。
「もし FuelPHP のバグを見つけたら (6)」へ続く。
2012-02-11
CodeIgniter のバージョンの調べ方
検索キーワードにあったので、CodeIgniter のバージョンの調べ方を記載しておきます。
CodeIgniter のバージョンは、(CodeIgniter 1.5 とかは違うみたいですが、少なくとも 1.6.0 以降は) 定数 CI_VERSION に定義されています。
この定数は、CodeIgniter 2.0 以降は、
- system/core/CodeIgniter.php
で、CodeIgniter 1.7.3 以前は、
- system/codeigniter/CodeIgniter.php
で定義されています。
2012-02-10
FuelPHP のコードカバレッジ
FuelPHP には PHPUnit による FuelPHP 本体に対するユニットテストが付属していますが、まだテストは十分とは言えません。
PHPUnit の コードカバレッジ解析 で実際に解析してみましょう。
なお、解析には Xdebug が必要です。
カバレッジレポートの作成
oil test コマンドでは phpunit の --group と --coverage-html オプションのみは使えます。
$ oil test --group=Core --coverage-html=./coverage
これで、converage フォルダにレポートが作成されます。
作成されたレポートを以下にアップしました。
このレポートには、テストがまったくされていないコードは含まれません。
Lines 41.48% 1356/3269
となっていますが、実際には fuel/core 以下のコードは、以下のように 37421行あります。
Lines of Code (LOC): 63198 Cyclomatic Complexity / Lines of Code: 0.14 Comment Lines of Code (CLOC): 25777 Non-Comment Lines of Code (NCLOC): 37421
ということで、みんなでテストをどんどん書きましょう♪
関連
2012-02-09
CodeIgniter 本体のユニットテスト
久しぶりに feature/unit-tests ブランチ で進められている CodeIgniter のユニットテストの状況を調べてみました。
残念ながら、ほとんど進んでいませんが、現状を確認してみます。
準備
PHPUnit 3.6 ではテストを実行できませんでした。
PHPUnit 3.5 と vfsStream をインストールします。
$ sudo pear channel-discover pear.phpunit.de $ sudo pear install phpunit/PHP_TokenStream-1.0.1 $ sudo pear install phpunit/PHPUnit_Selenium-1.0.1 $ sudo pear install phpunit/PHPUnit_MockObject-1.0.3 $ sudo pear install phpunit/PHP_Timer-1.0.0 $ sudo pear install phpunit/File_Iterator-1.2.3 $ sudo pear install phpunit/PHP_CodeCoverage-1.0.2 $ sudo pear install phpunit/DbUnit-1.0.0 $ sudo pear install phpunit/PHPUnit-3.5.15
$ sudo pear channel-discover pear.php-tools.net $ sudo pear install pat/vfsStream-alpha
$ sudo pear list -c phpunit
でインストール済みのパッケージを確認し、
$ sudo pear uninstall phpunit/パッケージ名 ...
ですべて削除してから、PHPUnit 3.5 をインストールしてください。
feature/unit-test ブランチのダウンロード
$ git clone -b feature/unit-tests git://github.com/EllisLab/CodeIgniter.git
テストの実行
$ cd CodeIgniter/tests $ phpunit
カバレッジはこんな感じでした。
ちなみに、system フォルダ以下の行数は、こんな感じです。
Lines of Code (LOC): 51444 Cyclomatic Complexity / Lines of Code: 0.15 Comment Lines of Code (CLOC): 24333 Non-Comment Lines of Code (NCLOC): 27111


