A Day in the Life

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 本番じゃどう考えても使わないし…。

記事の一覧 >