きりかノート 3冊め

おあそびプログラミング

RubyCocoaのLionでの問題を修正 - (2)

関数の返り値がオブジェクトでなくABRecordRef

tests/tc_types.rbでなぜかNSStringとかが返ってくるべきところでABRecordRefになってassertが失敗するという件。

   6) Failure:
 test_nssize(TC_Types) [./tc_types.rb:96]:
 <"{42, 43}"> expected but was
 <"#<OSX::ABRecordRef:0x108304f90>">.

   7) Failure:
 test_opaque_boxed(TC_Types) [./tc_types.rb:166]:
 <#<OSX::ABRecordRef:0x1082fd178>>
 expected to be kind_of?
 <OSX::NSString> but was
 <OSX::ABRecordRef>.

   8) Error:
 test_short_conversion(TC_Types):
 NoMethodError: undefined method `shortValue' for #<OSX::ABRecordRef:0x1082f4190>
     ./tc_types.rb:42:in `test_short_conversion'

けっきょく先日のNSDataの件と同様に、bridgesupportのopaqueの型テーブルに"@"型があるのが原因とわかった。なので修正も同様にテーブルに登録しないことで回避するようにした(r2308)。

残っている問題

テストが通らないところ。

  • tc_types.rbのtest_nsdecimalが落ちる。どうもNSDecimal型の値を取り出すときに問題があるっぽい。
  • 型名がちがう。いくつかのクラスクラスタのdescription名が変わったのでinspectのテストが失敗するようになった。たとえばNSCFNumber <=> NSNumberとか。まあこれはたいした問題じゃない。
  • plistのテストケースがいくつか失敗する。これはSnow Leopardから。
  • thread_hooksが有効でないrubyのとき実行時にエラーとなる。これもSnow Leopardのときも有った(Apple版はパッチで回避している)。

いちばん大きいのは1つめのもの。まだあたりもついてない。最後のは修正の方針がだいたい自分のなかで決まったので手を動かすだけ。