きりかノート 3冊め

おあそびプログラミング

RubyCocoa 今日のコミット 2011-08-31

主にテストまわり。Lionで全部のテストがとおるように。

  • redgreenを使わないように。test-unit2で色付きの出力がされるので。 (r2316)
  • 10.6以降ではthread hooks関連のテストを"Omission"に。(test-unit2が使える場合) (r2317)
  • C配列を含む構造体のテストを改善。 (r2318)
  • 基本?型がLionで変わったのにテストコードを対応。 (r2319)
  • テスト名が重複してるものがあったので片方を別名に。 (r2320)
  • NEWS, NEWS.jaファイルを更新。 (r2321)

いくつか補足説明。

C配列を含む構造体のテストを改善

先日修正した64bitでSEGVする件に関してのテストを修正。修正内容はSEGVするので飛ばすようにしていたテストを実行するよう戻したのと、32バイト以上の構造体のテストがないので追加。

もちろん修正作業時にテストは変更していたのだけどコミット忘れてたので。

基本?型がLionで変わったのにテストコードを対応

なんて呼べばいいのかわからないけど、いくつかのクラスクラスタのクラスがLionで変わったみたい。たとえばNSCFStringに見えていたものがNSMutableStringに、NSCFBooleanという論理値用の特別なクラスだったものが(少なくとも見た目では)NSNumberに、など。

その結果、assert_kind_ofやdescriptionの確認をしているところで失敗するようになってしまったのでどちらでも通るように調整。

テスト名が重複してるものがあったので片方を別名に

test-unit2を使うようにしてテストしていたら、N(Notifications)という見慣れない出力がでてきた。

 % ruby install.rb test --test-args='--testcase=/TC_NSArray/'
 install.rb: entering test phase...
 ---> tests
  :
 Loaded suite testall
 Started
 ..............................................................N..........

 Notifications:
 1) TC_NSArray#test_sort was redefined [test_sort(TC_NSArray)]
 testall.rb:9

 Finished in 0.255033 seconds.

 72 tests, 542 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 1 notif
 ications
 100% passed

メッセージのとおり、TC_NSArray#test_sortが2つ定義されており、メソッドが上書きされるのでもちろんテストは片方しか実行されていない。これはまずいよね。ということで片方の名前を変更して両方実行されるようにした。(簡単に内容みた感じ、内容もかぶってるぽいけど確信はなかったので。本当に内容も重複なら片方は削除すればよい)

test-unit2まぢすばらしい。Rubyの標準添付ライブラリのtest-unitもぜひ差し替えるべき。

今後の予定

まだ残作業はあるものの、とりあえず今週末あたりに一度リリースします。