現状のMyNETS2でCIUnit

MyNETS2

今現在の状況で言えば、
modules以下の本当にテストをしたい箇所がテストが出来ませんが、
動くところまでもっていくことができました。

ただ、MyNETS2のコードを書き換えての対応なので、
あまりよくない対応です。

Loader.phpのモバイルかどうかを判定して、
モバイル用のviewファイルがあれば、
そっちをとりにいく処理を
コメントアウトして動かしてます・・・・orz

あきらめずにコードを追いたいと思います。

追記:2009.06.07
CodeIgniterの話題とMyNETS2(アプリケーションプラットフォーム)との話題の差がわかりにくいので画像を作成してみました。MyNETS2の話題に関してはしばらくこれを使おうかなと思います。

さらに追記:2009.06.07 17:36
コメントアウトした部分は、携帯からのアクセスの場合、携帯用のviewフォルダにファイルがあればそっちを読むべし的な処理部分でした。1つのコントローラが、件数の表示を切り替えるにしても同じコントローラを使う場合使わない場合もありそうなので、コメントアウトのままでもいいかもしれないと思い始めています。・・・・でもやっぱりあったほうがいいのかなぁ・・・・(汗)

CIUnit: Unit testing for CodeIgniter(3)

CodeIgnigter

CIUnit.phpの改変

コントローラを読み込む際、ファイル名が小文字の場合に読み込まれないという問題が発生をしました。
そのため、CIUnit.phpを改変しました。
 
 
 

tests/CIUnit.php
124行目あたり

 
include_once(APPPATH . 'controllers/' . $controller . EXT);
 

↓修正
ファイルの存在確認を行い、なければ小文字にして読み込むよう、変更

if(is_file(APPPATH . 'controllers/' . $controller . EXT)){
    include_once(APPPATH . 'controllers/' . $controller . EXT);
}else{
    $controller2 = strtolower($controller);
    include_once(APPPATH . 'controllers/' . $controller2 . EXT);
}
 

これでテストが通るようになりました。

テストのコードカバー率を確認する

次に、phpUnitを使うなら、
http://gihyo.jp/dev/feature/01/php-test/0003?page=5
こんなレポートはぜひ生成させたい!
ということで、生成させようとしてみました

$ phpunit --report ./report AllTests.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

........................セグメンテーション違反です

phpunit AllTests.php
は、正常にテストが完了します。
–reportの場合のみ、 「セグメンテーション違反です」の文字が表示されて、処理が途中で止まります。
レポートも生成されません。
これは、

$this->load->model("モデル名");
// $this->CI->load->model("モデル名");も同様

の処理が入っているものすべてで発生をしていて、Controllreのテストでもモデルをロードしている場合は同じようにエラーが発生しました。モデルを読み込まないようにするとレポートが生成されます。
phpunitテスト自体は、モデルの読み込みの有無にかかわらず正常にテストの結果が返ってきます。

で、結局PHPUnitのコードに手を入れました(^-^;)
私の環境では、/usr/share/pear/PHPUnit/ にインストールされています。
手探りで、処理を追いつつ、結局ファイルに手を入れました。
/usr/share/pear/PHPUnit/Framework/TestResult.php
601行目あたり

xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
 

↓修正
とっても無茶な感じに修正(汗)

//xdebug_start_code_coverage(XDEBUG_CC_UNUSED | XDEBUG_CC_DEAD_CODE);
xdebug_start_code_coverage(XDEBUG_CC_UNUSED | 1);

print文を仕込んだところ、
XDEBUG_CC_UNUSEDは1
XDEBUG_CC_DEAD_CODEは2が格納されていました。

検索していて、このサイトを発見。
http://mp.i-revo.jp/user.php/kcvcrlkq/entry/249.html
0か1なら動くかな・・・・・ドキドキ
で、1にしてみたら、正常にテストが実行され、reportが生成されました

XDEBUG_CC_DEAD_CODEの意味とかちゃんと調べてからとか・・・・
動くには動いてますが、方法は間違ってる可能性が高いです。(><)

無事(?)レポートが生成されました。
system以下のコードのカバー率や、テストされている行が一目で見えるのは、
嬉しいです♪

生成されたレポートですが、日本語が文字化けをします。
そこでテンプレートを編集しました。
shimookaさんありがとうございますm(_ _)m

/usr/share/pear/PHPUnit/Util/Report/Template/file.html.dist

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

コードの日本語のコメント文の文字化けも直りました。

環境
Fedora 8
php-5.2.6-2.fc8
PHPUnit 3.3.16

PHP 5.2.6 (cli) (built: May 8 2008 08:54:23)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
with Xdebug v2.0.4, Copyright (c) 2002-2008, by Derick Rethans

関連
CIUnit: Unit testing for CodeIgniter
CIUnit: Unit testing for CodeIgniter(2)
CIUnit: Unit testing for CodeIgniter(2)のつづき

参考にさせていただいたサイト
PHPUnit3で始めるユニットテスト
http://gihyo.jp/dev/feature/01/php-test/0001

fooStack for CodeIgniter
http://www.foostack.com/foostack/

PHPUnit errorの記事
http://jaciss.wordpress.com/2008/02/18/phpunit-error-testcasename-or-testcase/

CIUnit: Unit testing for CodeIgniter(2)の続き

CodeIgnigter


CIUnit: Unit testing for CodeIgniter(2)
の続きです。
(3)ではありませn・・・・・(汗)
phpunitの再インストールで動き出したと思われたCIUnitですが、
正常な動作ではありませんでした。

$ cd controllers/

$ phpunit testWelcome.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

..

Time: 0 seconds

OK (2 tests, 2 assertions)

$ phpunit ControllersAllTests.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

..

Time: 0 seconds

OK (2 tests, 2 assertions)

ここまでは正常です。

controllreのテストまで正常に動きましたが、
全テストではエラーが発生します

$ cd ../
phpunit AllTests.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

.............<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  CIUnit::include_once(/var/www/html/works/system/application/controllers/Welcome.php): failed to open stream: No such file or directory</p>
<p>Filename: tests/CIUnit.php</p>
<p>Line Number: 124</p>

</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  CIUnit::include_once(): Failed opening '/var/www/html/works/system/application/controllers/Welcome.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php')</p>
<p>Filename: tests/CIUnit.php</p>
<p>Line Number: 124</p>

</div>PHP Fatal error:  Class 'Welcome' not found in /var/www/html/works/system/application/tests/CIUnit.php on line 130
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:52
PHP   3. PHPUnit_TextUI_TestRunner->doRun() /usr/share/pear/PHPUnit/TextUI/Command.php:128
PHP   4. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/TextUI/TestRunner.php:324
PHP   5. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
PHP   6. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
PHP   7. PHPUnit_Framework_TestSuite->runTest() /usr/share/pear/PHPUnit/Framework/TestSuite.php:658
PHP   8. PHPUnit_Framework_TestCase->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:677
PHP   9. PHPUnit_Framework_TestResult->run() /usr/share/pear/PHPUnit/Framework/TestCase.php:375
PHP  10. PHPUnit_Framework_TestCase->runBare() /usr/share/pear/PHPUnit/Framework/TestResult.php:607
PHP  11. PHPUnit_Framework_TestCase->runTest() /usr/share/pear/PHPUnit/Framework/TestCase.php:404
PHP  12. ReflectionMethod->invoke() /usr/share/pear/PHPUnit/Framework/TestCase.php:489
PHP  13. testCIUnit->testDifferentControllers() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:0
PHP  14. set_controller() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:147
PHP  15. CIUnit::set_controller() /var/www/html/works/system/application/tests/CIUnit.php:195

Fatal error: Class 'Welcome' not found in /var/www/html/works/system/application/tests/CIUnit.php on line 130

Call Stack:
    0.0005	83784   1. {main}() /usr/bin/phpunit:0
    0.1485    5663072   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:52
    0.3327    9503688   3. PHPUnit_TextUI_TestRunner->doRun() /usr/share/pear/PHPUnit/TextUI/Command.php:128
    0.3333    9506304   4. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/TextUI/TestRunner.php:324
    0.3342    9506512   5. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
    0.4183    9597480   6. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
    0.4809   10191464   7. PHPUnit_Framework_TestSuite->runTest() /usr/share/pear/PHPUnit/Framework/TestSuite.php:658
    0.4809   10191464   8. PHPUnit_Framework_TestCase->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:677
    0.4809   10191464   9. PHPUnit_Framework_TestResult->run() /usr/share/pear/PHPUnit/Framework/TestCase.php:375
    0.4811   10191464  10. PHPUnit_Framework_TestCase->runBare() /usr/share/pear/PHPUnit/Framework/TestResult.php:607
    0.4825   10201528  11. PHPUnit_Framework_TestCase->runTest() /usr/share/pear/PHPUnit/Framework/TestCase.php:404
    0.4826   10201528  12. ReflectionMethod->invoke() /usr/share/pear/PHPUnit/Framework/TestCase.php:489
    0.4826   10201528  13. testCIUnit->testDifferentControllers() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:0
    0.4827   10201528  14. set_controller() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:147
    0.4827   10201528  15. CIUnit::set_controller() /var/www/html/works/system/application/tests/CIUnit.php:195

$ cd controllers/
$phpunit testWelcome.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

..

Time: 0 seconds

OK (2 tests, 2 assertions)
[root@localhost controllers]# phpunit ControllersAllTests.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

..

Time: 0 seconds

OK (2 tests, 2 assertions)
$  cd ../
$ phpunit AllTests.php 
PHPUnit 3.3.16 by Sebastian Bergmann.

.............<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  CIUnit::include_once(/var/www/html/works/system/application/controllers/Welcome.php): failed to open stream: No such file or directory</p>
<p>Filename: tests/CIUnit.php</p>
<p>Line Number: 124</p>

</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  CIUnit::include_once(): Failed opening '/var/www/html/works/system/application/controllers/Welcome.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php')</p>
<p>Filename: tests/CIUnit.php</p>
<p>Line Number: 124</p>

</div>PHP Fatal error:  Class 'Welcome' not found in /var/www/html/works/system/application/tests/CIUnit.php on line 130
PHP Stack trace:
PHP   1. {main}() /usr/bin/phpunit:0
PHP   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:52
PHP   3. PHPUnit_TextUI_TestRunner->doRun() /usr/share/pear/PHPUnit/TextUI/Command.php:128
PHP   4. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/TextUI/TestRunner.php:324
PHP   5. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
PHP   6. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
PHP   7. PHPUnit_Framework_TestSuite->runTest() /usr/share/pear/PHPUnit/Framework/TestSuite.php:658
PHP   8. PHPUnit_Framework_TestCase->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:677
PHP   9. PHPUnit_Framework_TestResult->run() /usr/share/pear/PHPUnit/Framework/TestCase.php:375
PHP  10. PHPUnit_Framework_TestCase->runBare() /usr/share/pear/PHPUnit/Framework/TestResult.php:607
PHP  11. PHPUnit_Framework_TestCase->runTest() /usr/share/pear/PHPUnit/Framework/TestCase.php:404
PHP  12. ReflectionMethod->invoke() /usr/share/pear/PHPUnit/Framework/TestCase.php:489
PHP  13. testCIUnit->testDifferentControllers() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:0
PHP  14. set_controller() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:147
PHP  15. CIUnit::set_controller() /var/www/html/works/system/application/tests/CIUnit.php:195

Fatal error: Class 'Welcome' not found in /var/www/html/works/system/application/tests/CIUnit.php on line 130

Call Stack:
    0.0006	83784   1. {main}() /usr/bin/phpunit:0
    0.1494    5663072   2. PHPUnit_TextUI_Command::main() /usr/bin/phpunit:52
    0.3345    9503688   3. PHPUnit_TextUI_TestRunner->doRun() /usr/share/pear/PHPUnit/TextUI/Command.php:128
    0.3351    9506304   4. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/TextUI/TestRunner.php:324
    0.3360    9506512   5. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
    0.4190    9597480   6. PHPUnit_Framework_TestSuite->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:621
    0.4814   10191464   7. PHPUnit_Framework_TestSuite->runTest() /usr/share/pear/PHPUnit/Framework/TestSuite.php:658
    0.4814   10191464   8. PHPUnit_Framework_TestCase->run() /usr/share/pear/PHPUnit/Framework/TestSuite.php:677
    0.4814   10191464   9. PHPUnit_Framework_TestResult->run() /usr/share/pear/PHPUnit/Framework/TestCase.php:375
    0.4816   10191464  10. PHPUnit_Framework_TestCase->runBare() /usr/share/pear/PHPUnit/Framework/TestResult.php:607
    0.4831   10201528  11. PHPUnit_Framework_TestCase->runTest() /usr/share/pear/PHPUnit/Framework/TestCase.php:404
    0.4831   10201528  12. ReflectionMethod->invoke() /usr/share/pear/PHPUnit/Framework/TestCase.php:489
    0.4831   10201528  13. testCIUnit->testDifferentControllers() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:0
    0.4832   10201528  14. set_controller() /var/www/html/works/system/application/tests/ciunit/testCIUnit.php:147
    0.4832   10201528  15. CIUnit::set_controller() /var/www/html/works/system/application/tests/CIUnit.php:195

なぜかAllTTestの場合、controllerのwelcomeを呼び出しているところが、Welcomeを呼び出そうとして失敗をしています。

CIUnit.phpの124行目

include_once(APPPATH . ‘controllers/’ . $controller . EXT);
の部分の$controller がwelcomeからWelcomeに変化しています。それによってファイルが読み込めずのエラーのようです。

無理やりな感じになおしてみました。

CIUnit.phpの124行目
include_once(APPPATH . ‘controllers/’ . $controller . EXT);
大文字でファイルがなかったら、小文字にしてファイル読み込んでよね的。

if(is_file(APPPATH . 'controllers/' . $controller . EXT)){
		    include_once(APPPATH . 'controllers/' . $controller . EXT);
		}else{
		    $controller2 = strtolower($controller);
		    include_once(APPPATH . 'controllers/' . $controller2 . EXT);
		}

やっとやっと、テストができるところまで到着(TAT)

ここまでの感想
phpunitの再インストールの記事を自力で探せませんでした。
基礎力がおそろしく足りないことを自覚しました。
「何がわからないか?」がわからないと解答が目の前にあってもそれが解答と理解できないのだなぁ・・・・

CIUnitへの挑戦はこんな流れでがんばってみる予定です

  • CIUnitを設置してみる
  • CodeIgniterでテストができるようにする ←今ココ
  • 実際にテストを書いてみる
  • テストの効果を実感してみる
  • CIUnitのコードを読んでみる
  • MyNETS2(CodeIgniter 1.7.0改)で使えないか模索してみる

    WebdabをOSXから接続してみるメモ

    cyberduck

    WebdabをWindowsから接続してみるメモを書いたわけですが、OSXの場合についてメモ的にUPしておきます。

    FTPソフトのCyberduckを利用し、接続することが出来ます。
    FTP, SFTP, WebDAV, Cloud Files & Amazon S3 Browser for Mac OS Xとサイトに書かれている通り、本当に多機能です。
    SFTPについては、鍵ファイルを指定する設定もあり、鍵認証での接続も大丈夫。

    設定がそれぞれの接続で違うだけで、FTPであってもwebdavであっても実際のアップ作業では差がありません。
    同じ操作で作業が出来ることはとても良いことだと思います。

    CIUnit: Unit testing for CodeIgniter(2)

    CodeIgnigter

    CIUnit
    CIUnit: Unit testing for CodeIgniter

    サイトによると・・・
    CIUnit は、Codeigniterで作ったアプリケーションとphpUnitを繋ぐためのブリッジの役割をするもののようです。
    「tested with 1.6.X, 1.7.0 and 1.7.1」ということなので、1.7.0 1.7.1でもテストが出来ます。

    [Download the current fooStack v0.15 here!]というテキストリンクからダウンロードしました。
    開発バージョンと旧式のバージョンはbitbucket.org / ciunitというところを見ると良いらしいです。
    bitbucket(びっとばけつ)というものをはじめて知りました。
    フォルダ名等、通常の構造のままであることが、使用の前提のようです。
    英語苦手なので、自分用に翻訳してみました(^-^;)

    Install it as follows:インストール方法(訳)

    1.fooStackディレクトリ をコピーして、
    /system/application/librariesの直下に設置します。

    2. テストをするCodeIgniterアプリは、標準のレイアウトを使用していることを想定しています。

    3. testsディレクトリをコピーして
    /system/applicationの直下に設置します

    4. system/codeigniter/CodeIgniter.phpを
    ダウンロードした同名のファイルと入れ替えます。

    5. rsystem/application/config/database.phpを改変します。

    $active_group = "default";

    の部分を

    $env_used = 'default'; //where default would be the name of your development setting
          if(defined('CIUnit_Version')){
            $env_used .= '_test';
          }
          $active_group = $env_used;

    ・・・と置き換えちゃいます。

    6. ‘テストデータベースとして機能する新しいデータベース設定を作成します。
    (テストを実行すると、それはいつもクリアになります)
    データベースの名前は開発環境のようですが、‘_test’とつけてください。
    【注意】CIUnit fixturesは、データベース名の後ろに、’_test’とつけて、それを使うことで
    テストの実行によるDBデータの損失を防ぐようになっています。

    訳してみたけど微妙な文書になってる気がする・・・

    追記:2009.05.31
    テスト用のデータベースの設定が必要です。
    私は開発中のDBのコピーをDB名_testで作成して、テスト用のDBにしました

    $db['default_test']['hostname'] = "localhost";
    $db['default_test']['username'] = "DBの接続ユーザ";
    $db['default_test']['password'] = "パスワード";
    $db['default_test']['database'] = "テスト用データベース";
    $db['default_test']['dbdriver'] = "mysql";
    $db['default_test']['dbprefix'] = "";
    $db['default_test']['pconnect'] = TRUE;
    $db['default_test']['db_debug'] = TRUE;
    $db['default_test']['cache_on'] = FALSE;
    $db['default_test']['cachedir'] = "";
    $db['default_test']['char_set'] = "utf8";
    $db['default_test']['dbcollat'] = "utf8_general_ci";

    Run tests テストを走らせてみる。
    1.すべてのテストディレクトリからテスト

    $ phpunit AllTests.php

    実行した結果

    phpunit AllTests.php
    PHPUnit 3.1.8 by Sebastian Bergmann.
    
    FFFFFFF
    
    Time: 0 seconds
    
    There were 7 failures:
    
    1) Warning(PHPUnit_Framework_Warning)
    No tests found in class "CiunitAllTests".
    
    2) Warning(PHPUnit_Framework_Warning)
    No tests found in class "SystemAllTests".
    
    3) Warning(PHPUnit_Framework_Warning)
    No tests found in class "LibsAllTests".
    
    4) Warning(PHPUnit_Framework_Warning)
    No tests found in class "ModelsAllTests".
    
    5) Warning(PHPUnit_Framework_Warning)
    No tests found in class "ViewsAllTests".
    
    6) Warning(PHPUnit_Framework_Warning)
    No tests found in class "ControllersAllTests".
    
    7) Warning(PHPUnit_Framework_Warning)
    No tests found in class "HelpersAllTests".
    
    FAILURES!
    Tests: 7, Failures: 7.

    2.サブグループだけのテスト

    $ cd models
    $ phpunit ModelAllTests.php

    実行した結果

    [root@localhost models]# phpunit ModelsAllTests.php 
    PHPUnit 3.1.8 by Sebastian Bergmann.
    
    F
    
    Time: 0 seconds
    
    There was 1 failure:
    
    1) Warning(PHPUnit_Framework_Warning)
    Constructor of class "testSomeModel" is not TestCase($name) or TestCase().
    
    FAILURES!
    Tests: 1, Failures: 1.

    3.特定の1つだけのテストの場合は
    テストを書いたディレクトリに移動して、テストを書いたファイルそのものを実行してください

    Generating database fixtures

    ちと意味がわからなかった・・・・テスト用DBのかわりにyamlで代用が出来るよ的な内容かなとは思う・・・・

    テスト用のテーブルを、作ることが出来ます。
    (テスト用のデータベースそのものを用意するべきですが・・・)
    テスト用ファイルは、tests/fixtures/以下で利用可能です。
    ディレクトリに対して書き込み可能な状態にしてください。
    テスト用ファイルは、yamlのフォーマットで記載します。
    yamlにテスト用のデータを記載してください。

    $this->dbfixt('items', 'comments', 'users');

    テストから、機能をセットアップしてください。
    そうすると、テストデータベースに読み込まれるので、変数をテストで利用可能になります。

    $this->items_fixt, 
    $this->comments_fixt, 
    $this->users_fixt.

    テストデータベースのコメントテーブルのデータの2番目の行も利用可能です。

    $this->comments_fixt['second'];

    CIUnit tests itself CIUnit自体のテスト
    テストを全く書かずにテストを実行してください。

    $ phpunit CIUnitAllTests.php

    ・・・を実行すると、2つか3つぐらいのテストの結果が返ってきます。
    これは、CIUnitが正しくインストールされていることを確認するためのテストです。

    そして実際にテストを書いてみる
    ・・・が、私はまだphpUnitの使い方もよくわかっていないorz
    設置したtestsフォルダの中に、サンプルのコードがありました。

    system/application/tests/controllers/testWelcome.php

    <?php
    
    include_once dirname(__FILE__).'/../CIUnit.php';
    
    class testWelcome extends CIUnit_TestCase{
    
        function setUp(){
    	$this->CI = set_controller('welcome');
        }
    
        public function testWelcomeController(){
          $this->CI->index();
          $out = output();
          $this->assertSame(0, preg_match('/(error|notice)/i', $out));
        }
    
    }

    tests/models,tests/libsの中にも同じような感じでサンプルのコードがありました。

    追記:2009.05.30
    phpUnitのチュートリアルをやってみて、CIUnitのテストを書いてみたけどうまくいかない。
    サンプルに追記をしてみても、改変をしてみても

    1) Warning(PHPUnit_Framework_Warning)
    Constructor of class "testWelcome" is not TestCase($name) or TestCase().

    と、テストケースが無いよと言われる。
    設置した直後の状態と、サンプル(tests/controllers/testWelcome.php)に追記したあとも、
    テスト結果が変わらない(T-T)

    追記:2009.05.30 04:01
    lllnorikolllさんが教えてくださったサイト・・・・
    http://jaciss.wordpress.com/2008/02/18/phpunit-error-testcasename-or-testcase/
    phpUnitをインストールしなおせということのようです・・・・orz

    追記:2009.05.30
    pearをアンインストールしたあと、したりインストールしたりを繰り返したら動くようになりました(><)
    ありがとうlllnorikolllさん!!!

    アンインストールした後、

    # ll /usr/share/pear

    で確認してみたら、なぜかPHPUnit/があったのでフォルダごと削除してから、再度phpunitをインストールしてみたら、テストが通るようになりました。
    なぜだかはわからないけれども、
    とにかくテストを書く手前までたどり着けました(><)ノ

    Manage It! 現場開発者のための達人式プロジェクトマネジメント

    Manage It! 現場開発者のための達人式プロジェクトマネジメント

    「Manage It! 現場開発者のための達人式プロジェクトマネジメント」
    少しずつ読んでいた、この本をやっと読み終えました。
    この本は、3回、4回と読み返したい本です。
    読了まで時間がかかったのは、読みにくかったからではなく
    各章がとても参考になり、同じ章を何度か読み返したり、読んでいるうちに
    前に読んだ章が気になって読み返してみたりと・・・・・・

    もう、本当にすごいオススメ!

    プロジェクトマネージャーだけが読むべき本ではなくて、
    プロジェクトに、仕事のチームに参加をする人であれば、是非に読むべき本だと思います。

    MacbookPro修理

    MacBookPro(Core2Duo 2.33Ghz 15.4インチワイド液晶

    MacbookProのDVDドライブとHDDが不調なためApple銀座へ持ち込み、修理をお願いしました。
    DVDドライブは修理、HDDは交換となりました。
    思っていた以上に早く修理から戻り助かりました。
    AppleCare入ってて良かった♪

    修理から戻ったMacbookProは
    修理に出す前にCarbon Copy Cloner(カーボン コピー クローナー)でバックアップを外付けHDDにとっておいたので、OSXの移行ツールを使ってバックアップから復旧。

    BootCamp領域は、Wincloneで作っておいたバックアップイメージから復旧。

    あっさりと元の環境を取り戻しました。

    SubversionとWebdavとhocks

    subversion
    SubversionとWebdavとhocksでwebdavにコミットした内容を、コミットした直後に、動作確認をプロジェクトメンバー皆で確認できる環境が欲しいなと思い、環境を作ってみました。

    Webdavの利用
    webdavからのオートコミットであるという定型文がコミットログとして保存されます。
    大きなメリットとしては、dreamweaverではFTPを使うのと全く同じ操作感でファイルをwebdavへUPすることができます。今まで全くwebdavを使ったことが無い人でもFTPでアップしながらの製作作業を行った経験のある方であれば、全く作業の内容を変えることなく、webdavを利用することが出来ます。
    新たに覚えることは、dreamweaverでのwebdavサーバの設定方法だけです。
    実際の製作内容で、新たに操作方法を覚えたり、普段と違う作業を行うといったことは一切ありません。

    webdavはSVNの連動ではなく、webdav単体で利用する場合、アップされたファイルは指定のURLに保存されます。
    apacheの拡張機能で、ファイルの操作をapacheが行うので、当然アップされたファイルはすべてapacheユーザのものになるため、パーミッションの問題が発生することはまずありません。
    webdavのアクセス権限を制限するために使用する認証情報(ID,PASS)は、ファイルをアップする時にも使え、また表示確認の際、ブラウザ越しにurlへアクセスする場合にベーシック認証として動作するためID,PASSの管理が容易です。

    WebdavとSubversionとの連動
    subversionとwebdavを連動するように設定すると、webdavへのファイルアップ(削除も…)=コミットとなります。
    自動的にsubversionへコミットしたことになります。
    subversionクライアントソフトを使う場合との差は、コミットログの登録ができないことです。

    webdavからのオートコミットの場合は次のようなコミットログが保存されます

    Autoversioning commit:  a non-deltaV client made 
    a change to
    /xxxxx/xxxxx.text ←コミットしたファイルのパス

    オートコミットしたコードの動作確認?
    webdav経由でのオートコミットの場合、そのままではwebdav単体での利用とは違い、即ブラウザから表示確認(動作確認)を行うことが出来ません。表示確認を行う場所を作り、表示確認をするまえにsvn updateを実行する必要があります。
    あらかじめ、サーバ上に動作環境としてソースコードをチェックアウトしておき、
    subversionの機能で、コミットをしたタイミングで、プログラムを実行させるhocksという機能があります。
    これを利用し、あらかじめ用意をしておいたサーバ上の動作環境に対して、svn updateを実行します。

    レポジトリを設置したディレクトリ/hocks/post-commit.tmpl というファイルをpost-commitというファイルにコピーをして、実行権限をつけます

    # cp post-commit.tmpl  post-commit
    # chmod 755 post-commit

    hocksで実行するファイルを、レポジトリのフォルダの中に設置場所を作り、そこに置きました。

    # mkdir レポジトリのフォルダ/script_hocks/
    # chmod 755 レポジトリのフォルダ/script_hocks/
    # chown apache.apache レポジトリのフォルダ/script_hocks/

    実行するファイルを作成

    # vi レポジトリのフォルダ/script_hocks/svnupdate.cgi
    #!/usr/bin/env python
    import os;
    result = os.system("svn update [チェックアウトした場所のパス]");

    このままだと、svn updateをするapacheユーザがsvnのアカウントの情報をもっていない状態なのでrootで、一時的にapacheでログインできるようにし、svn updateをチェックアウトした場所のパス上で一度実行します。
    順番はこんな感じ。

    • apacheが使用するためのsubvsersionのアカウントを作る。(ID,PASSの発行)
    • 上記で作ったアカウントに対してsubvsersionのアクセス権をつける・・・反映させるだけならreadだけでOK
    • サーバ上で、apacheユーザに対して、シェルを使えるように設定する
    • rootからsu apache で、apacheユーザになり、svn updateを実行する。
      • このとき、subversionのIDとPASSを聞かれます。
      • opensslを使用している場合は、接続を許可するかどうかも聞かれます
    • apacheユーザに対して、シェルを使えなくする
      (/sbin/nologinの設定に戻す)

    今回試してみた環境

    • subversion-1.4.4-7
    • httpd-2.2.8-1.fc8
    • python-2.5.1-15.fc8

    補足的に・・・・

    • OS Fedora 8 (・・・そろそろ入れ替えたい)
    • Trac 0.11.2.1.ja1

    関連記事

    –TODO
    CodeIgniterでTDDができるようにする!
     CIUnitを使ってみる
     DocTestをCodeigniterで使えないか試してみるとかしてみる。
     MyNETS2のコードを読んでみる。
     

    WebdabをWindowsから接続してみるメモ

    windowsクライアント
    Windowsのネットワークプレースがもう少し使い勝手が良いと一番良いのだけれども、結構失敗もあるのでWindows用のクライアントを探してみました。

    【無償】http://www.rei.to/carotdav.html

    carotDAV
    なかなか使い勝手もよさそうな感じです。
    Windowsのネットワークプレースで失敗したファイルもあっさりとUPできました。
    ファイル名が日本語のものも問題ありませんでした。
    フォルダが階層立てで見えなかったりするのが残念ですが、操作性も高く、とてもわかりやすいです。

    もうすこし触ってみたいと思います。

    【無償】http://www.mylab.jp/program/dddav/

    dddav
    ためしてみたのは、dddav-0.0.13.2.zip (2009-5-7)と書かれた最新版。
    見た目がとてもFTPっぽいです。
    フォルダごとアップロードも簡単。
    下の部分に、作業の履歴が表示されるのも素敵。
    ただし、put getは履歴が表示されるものの、削除時には履歴は表示されないみたい。

    【有償】Dreamweaver CS4
    Dreamweaver

    Dreamweaver CS4でwebdavモードを使ってみました。
    FTPを使う感覚と全く同じで使えてすばらしい。
    そこそこのサイズのファイルもあっさりとアップできました。
    Windowsのネットワークプレースでファイルのアップに失敗したものも、問題なくアップできました。

    【無償】http://www.teamfile.com/modules/mydownloads/

    ファイルの移動も結構早い印象です。
    (Webdavクライアントソフトそれぞれの転送速度を計測はしていませんが・・・・)
    ロックがかかっている状態が把握しやすく、わかりやすいです。

    感想
    元々Dreamweaverは大好きなのですが、ファイルをちょこっとUPしたり、とってきたりするためだけにDreamweaverでサイトを設定しておくのもなんだかなぁと思ったりもしています。使い分ける感じになるかなと思っています。
    dddavやcarotdavは、手軽に使いたい場合にとてもよさそう。
    がっつり使うなら、TeamFireなのかなという印象でした。

    しばらくそれぞれを使いつつ、おちついたもの以外をアンインストールしようかなと思います。