咳さん
遠藤です。

2010年1月30日21:39 Masatoshi SEKI <m_seki / mva.biglobe.ne.jp>:
> 時間と元気があるときに、evalするようなテストケースを提案してみます。
> 英語で意図を説明するのは私には無理なので、コード送ります。たぶん。


eval するような spec に書きなおして見ました。

私は rubyspec のコミット権を持っているので、咳さんさえよければすぐに
コミットしてしまいますが、よろしいでしょうか。


diff --git a/library/erb/src_spec.rb b/library/erb/src_spec.rb
index 8ea89b5..7b11041 100644
--- a/library/erb/src_spec.rb
+++ b/library/erb/src_spec.rb
@@ -3,51 +3,30 @@ require File.dirname(__FILE__) + '/../../spec_helper'

 describe "ERB#src" do

-  ruby_version_is "" ... "1.8.7" do
-    it "returns the compiled ruby code" do
-      input = <<'END'
+  it "returns the compiled ruby code evaluated to a string" do
+    # note that what concrete code is emitted is not guaranteed.
+
+    input = <<'END'
 <ul>
 <% for item in list %>
 <li><%= item %></li>
 <% end %>
 </ul>
 END
-      expected = <<'END'
-_erbout = ''; _erbout.concat "<ul>\n"
- for item in list ; _erbout.concat "\n"
-_erbout.concat "<li>"; _erbout.concat(( item ).to_s); _erbout.concat "</li>\n"
- end ; _erbout.concat "\n"
-_erbout.concat "</ul>\n"
-_erbout
-END
-
-      expected.chomp!
-      ERB.new(input).src.should == expected
-    end
-  end

-  ruby_version_is "1.8.7" do
-    it "returns the compiled ruby code" do
-      input = <<'END'
+    expected = <<'END'
 <ul>
-<% for item in list %>
-<li><%= item %></li>
-<% end %>
-</ul>
-END

-      expected = <<EOS
-_erbout = ''; _erbout.concat "<ul>\\n"
-;  for item in list ; _erbout.concat "\\n<li>"
-; _erbout.concat(( item ).to_s); _erbout.concat "</li>\\n"
-;  end ; _erbout.concat "\\n</ul>\\n"
+<li>1</li>

-; _erbout
-EOS
+<li>2</li>

-      expected.chomp!
-      ERB.new(input).src.should == expected
-    end
+<li>3</li>
+
+</ul>
+END
+    list = [1, 2, 3]
+    eval(ERB.new(input).src).should == expected
   end

 end

-- 
Yusuke ENDOH <mame / tsg.ne.jp>