Hatena::Groupsubtech

#生存戦略 、それは

-> 06 { 11 / 01 }

ruby で Test::Base

20:01 | はてなブックマーク - 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
<div class="section">
  <p>secondlife</p>
</div>

===
--- input
 >||
 superpre
 ||<

--- output
<div class="section">
  <pre>
superpre
</pre>
</div>

結果

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 対応もします。routesTest とか Test::Base で書きたい。

追記

http://subtech.g.hatena.ne.jp/secondlife/20061102/1162426976

svn に上げたよ

moromoro2006/11/01 10:48むむむ。
移行したいくなるなぁ。SQLite3本番にも使いたいけど。

secondlifesecondlife2006/11/01 10:50>> SQLite3本番
えええっ

moromoro2006/11/01 11:12小規模だと意外といけないなぁ、と。
バックアップも直感的にとれるし。
ちなみに速度比較のInnoDBはshmに置いた速度?

secondlifesecondlife2006/11/01 11:25table lock してない backup はこわくないすか?いざバックアップから復旧しようとしたら実は壊れてたりとか…。sqlitehotbackup みたいなツールあるのかなぁ。というかそこら辺のノウハウが全然sqlite3 だとわからんので、そもそも本番で使う気が無いともいえます。余計にコストかかっちゃう。
速度は shm じゃなくてふつうのHDDにおいてます>InnoDB

kakutanikakutani2006/11/01 23:45Test::Base on Rails欲しい!!

secondlifesecondlife2006/11/02 09:25RSpec::Base ほしい!うそ!

トラックバック - http://subtech.g.hatena.ne.jp/secondlife/20061101