きりかノート 3冊め

おあそびプログラミング

Snow Leopardで残っている問題

今のtrunk(r2262)でパスしないテストについて。

32/64共通

  • tests/tc_subclass.rb

test_undo2で以下のメッセージが出力されて中断する。

.........2009-09-23 01:35:20.027 ruby[47396:903] *** Terminating app due to 
uncaught exception 'NSInternalInconsistencyException', reason: 'forwardInvocatio
n:: NSUndoManager 0x10337a580 received forwarded invocation while invocation 
target is nil. Call prepareWithInvocationTarget: before invoking respondsToSelector:'

どうやらNSUndoManagerのチェックが強化されて、メッセージのとおりprepareWithInvocationTarget:の前にforwardInvocation:が呼ばれているのが怒られる原因のよう。forwardInvocation:使わずにrespondsToSelector:呼べばいいんだろうけど、今の実装てそうなってなかったけ?

  • tests/tc_thread.rb

assert_threads_supported()が失敗する。これは10.6ではthread hooksが無効になっているため。

現状としては意図された動作なので問題ない。テストケースを直してスルーさせてもいいけど、失敗で残しておいたほうがよいと判断した。

64のみ

  • tests/tc_types.rb

test_cary_struct()のt2 = o.test2でときどきSEGVする。libffiかその使い方に問題があるっぽいけど不明。わりと特殊なケースなので、影響は小さいかもしんない。

その他

たぶん新しめのactivesupportに対応していない。優先度はほかのものと比べると低め。10.5以前でもテストは失敗する。