Rubyで遊んだ日々の記録。あくまで著者視点の私的な記録なので、正確さを求めないように。
Rubyと関係ない話題にはその旨注記しているはず。なので、一見関係無いように見える話題もどこかで関係あるのかもしれません。または、注記の書き忘れかもしれません...
_ ちょっと重くなったかなー、と思ったんだが、そうでもないらしい。
頑張っていっぱい飲め!
_ test-all
が動かない話の絡みで久し振りにtestrb.batを実行してみようとして、バッチファイルが壊れてることに気付く。
いやー、早めに気付いてよかった。12月まで気付かなかったら壊れたまま1.8.6が出ちゃうもんな。
_ 壊れるに至った変更の意図が理解できない(ChangeLogにない)ので、とりあえず元と同じファイルが生成されるように直しておいた。
なんか意図があったなら、適当によろしく>なかださん
setup
の定義を上書きしちゃったりして悲惨なことになるんだよね。Test::Unit:TestCase
でClass#inherited
を定義しておいて名前の衝突を検出するとか?class SomeTestClass < Test::Unit::TestCase ... end
はもう古い!
これからは、
Class.new(Test::Unit::TestCase) do ... end
-v
とか失敗した時とかクラス名出ないのさびしいよね。-v
はファイル名出ないよ。-v
でテスト名だけだと、テストがどこまで進んでるか見てもわかりにくいし。Module.new do class SomeTestCase < Test::Unit::TestCase ... end end
Module#const_set
を使って...Module.new do const_set("SomeTestCase", Class.new(Test::Unit::TestCase) do ... end) end
% ruby -e 'Foo = Class.new; p Foo.name' "Foo" % ruby -e 'Module.new{Foo = Class.new; p Foo.name}' nil
Module.new do |mod| class mod::SomeTestCase < Test::Unit::TestCase ... end end
mod
がnil
になってる。というわけで([ruby-dev:29637])、めでたしめでたし(?)
_ なお、以上の掛け合いは実際の出来事を元にしたフィクションなので、実在の人物が実際にこんな発言をしたりこんなコードを書いたりしていたわけではありません。
module
なんか使わずにこれでいいじゃん。def define_test(test_name, &block) klass = Class.new(Test::Unit::TestCase) class << klass; self; end.class_eval {define_method(:name) {test_name}} klass.class_eval(&block) end
Test::Unit
の特異メソッドにして、と。define_singleton_method
があるとすれば、こうだね。module Test::Unit def self.define(test_name = caller.first.sub(/ in `.*'\z/, ''), &block) Class.new(Test::Unit::TestCase) do |klass| klass.define_singleton_method(:name, &test_name.method(:to_s)) klass.class_eval(&block) end end end
被捕捉アンテナ類
[\ay antenna (testing)]
[Ant]
[Antenna-Julia]
[LayserあんてなV2]
[nAntenna]
[nuance de Antenna]
[Rabbit's Antenna]
[Read List]
[Ruby hotlinks 五月雨版 (るるりん。)]
[してたま (私的アンテナ with たまてばこ)]
[ただのあんてな]
[ちゃらんぽらん]
[でこぽんリンク]
[なよろアンテナ]
[にっきトレーサー]
[偽善者あんてな - 2nd season -]
[湘南日記放送局(SDB)]
[はてなの各アンテナ]