A Day in the Life

2007-01-17

Re: Test::Base で例外

http://moonrock.jp:23000/articles/2007/01/16/tests-the-exception-generating-by-using-test-base

む、どんなテストを想定しているのかよくわからないんですが、自分なら下記のように書きます。

でも確かに block をそのまんま Test::Base の構文として欲しいし、フィルタ内部(この場合は eval フィルタ)で exception が起きたら ApplyFilterError になるのはどうなんじゃろとか思ったり。ruby の block を生かせないと、イテレータの処理がうまくフィルタだけじゃ行えないしなぁ。うーん。

$LOAD_PATH << 'lib'
require 'test/base'

class ExceptionHandlingTest < Test::Base
  filters :o => %w(eval), :raise => %w(eval)
  def run_test(block)
    if block[:raise]
      assert_raise(block[:raise]) do
        eval block[:i]
      end
    else
      assert_equal eval(block[:i].eval), block[:o]
    end
  end
end

__END__
=== ただの equal
--- i
'foo'
--- o
'foo'

=== もし例外が起きたらその1
--- i
raise RuntimeError
--- raise
RuntimeError

=== もし例外が起きたらその2
--- i
'aaa
--- raise
SyntaxError

えいごぶろぐ

必要だよなぁ。vox で始めるのはちょうど良いのかもだけど、スーパーpre が使えないと技術系のブログ書くのめんどくさすぎるので typo になんのかなぁ。typo 謎エラーが時たまでて追っかける気が無いのがつらい。。

記事の一覧 >