Rubinis 用の spec ファイルを作成する
Rubinius では、Test::Unit ではなくて、RSpec でもなくて、独自に作った RSpec のサブセットを使ってテストをしている。しかも単なるサブセットではなく、Rubinius 用の拡張が入っている。
また Rubinius には、spec ファイルを生成するためのテンプレートが用意されている。
$ cd rubinius.code/ $ bin/mkspec -rerb -c ERB -b spec/ruby/1.8/library/
これで rubinius.code/spec/ruby/1.8/library/erb 以下に spec ファイルのスケルトンが生成される。あとはこれをガシガシ書き込んでいくみたい。
しかし spec ファイルの書き方が分からない。いちおうガイドラインがあったので読んでみて、それから他の spec ファイルを見ながら、spec/ruby/1.8/library/erb/util/html_escape_spec.rb を書いてみた。
require 'erb' require File.dirname(__FILE__) + '/../../../spec_helper' describe "ERB::Util::html_escape" do it "escape '& < > \"' to '& < > "" do input = '& < > "' expected = '& < > "' ERB::Util::html_escape(input).should == expected end it "not escape characters except '& < > \"'" do input = (0x20..0x7E).to_a.collect {|ch| ch.chr}.join('') expected = input.gsub(/&/,'&').gsub(/</,'<').gsub(/>/,'>').gsub(/"/,'"') ERB::Util::html_escape(input).should == expected end end
spec のテスト実行は、全体を実行するなら rake spec:ci で行うけど、ある特定の spec だけを対象としたいなら bin/ci コマンドを使うようだ。
$ cd rubinius.code/ $ bin/ci spec/ruby/1.8/library/erb/util/html_escape_spec.rb Started .. Finished in 0.041293 seconds 2 examples, 2 expectations, 0 failures, 0 errors
erb.rb の spec ファイルをすべてテストしたい場合は、ディレクトリ名を指定すればいい。
$ cd rubinius.code/ $ bin/ci spec/ruby/1.8/library/erb # erb 以下のすべての spec ファイルをテスト Started .. Finished in 0.614440 seconds 2 examples, 2 expectations, 0 failures, 0 errors