2006-11-01
つかそもそも public に公開してるような svn repos が
無いのが開発者としてアレすぎ。みんなプライベートなレポジトリとパブリックなレポジトリつかいわけてんのかなー。今は public なレポジトリ(https://svn.rails2u.com/public/)にプライベートなレポジトリから公開するファイルだけ dump してもってきててあれすぎる。
ruby で Test::Base
ほしくなったので作った。細かい本家の仕様には対応してなくて、Test::Unit::TestCase ベースで。assert_* 使いたいからなぁ。でももっともっと ruby っぽいインタフェにしたい。
とりあえず今できるのは
- run_tests メソッドを定義して実行
- filter
- filters {:input => ['eval', '.strip', '.to_f', Proc.new{|v| v * v}]} みたいな
- レシーバに対するメソッド呼び出しは . を頭につける
- デフォルトのフィルタ定義
- defalut_filters %w(.strip) とか
- ↑ださいな
- spec_file, spec_string によるデータ読み込み
- ワンラインフィルタ
- --- input filter1 filter2 とか
- ワンラインデータ
- --- input : datafoobar とか
んで
require 'test/base'
require 'text/hatena'
class TextHatenaTest < Test::Base
default_filters %w(.strip)
filters :input => 'hatenaize'
def run_tests(spec)
assert_equal spec.input, spec.output
end
def hatenaize(value)
parser = Text::Hatena.new
parser.parse(value)
parser.html
end
end
__END__
===
--- input
secondlife
--- output
secondlife
===
--- input
>||
superpre
||<
--- output
superpre
結果
loaded suite text_hatena_test
Started
..
Finished in 0.042499 seconds.
2 tests, 2 assertions, 0 failures, 0 errors
とか。run_* で assert_* に delegate ぐらいならすぐできるけど、はたして見やすくなるのかなぁ。test-base という namespace で rubyforge に登録したので申請が通り次第 svn に上げます。一緒に開発してくれる人や意見くれる人募集中><><。
あと rails 対応もします。routes の Test とか Test::Base で書きたい。
追記
http://subtech.g.hatena.ne.jp/secondlife/20061102/1162426976
↑svn に上げたよ
One Little Cowboy / ROUND TABLE
ウィスパーボイスがたまらんなぁ
MySQL 5.0.26 + InnoDB vs SQLite 3.3.8 + :memory:
んー、schema がデフォルトで DB にあって drop/create せず、 test では rollback すること前提(MyISAM だとそもそも rollback できないくて、use_transactional_fixtures = false にしても挙動が違ったりするのでアレゲ)な InnoDB と SQLite3 + :memory: で速度はかったら微妙に InnoDB のほうが速いよ!というわけで MySQL に test も移行しよう SQLite3 本番じゃどう考えても使わないし…。