[前][次][番号順一覧][スレッド一覧]

ruby-changes:6098

From: kazu <ko1@a...>
Date: Fri, 27 Jun 2008 17:48:40 +0900 (JST)
Subject: [ruby-changes:6098] Ruby:r17610 (trunk): * lib/erb.rb: adjust line number for magic comment.

kazu	2008-06-27 17:48:24 +0900 (Fri, 27 Jun 2008)

  New Revision: 17610

  Modified files:
    trunk/ChangeLog
    trunk/lib/erb.rb
    trunk/test/erb/test_erb.rb

  Log:
    * lib/erb.rb: adjust line number for magic comment.
    * test/erb/test_erb.rb: add tests for def_method.


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=17610&r2=17609&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/test/erb/test_erb.rb?r1=17610&r2=17609&diff_format=u
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/lib/erb.rb?r1=17610&r2=17609&diff_format=u

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 17609)
+++ ChangeLog	(revision 17610)
@@ -1,3 +1,9 @@
+Fri Jun 27 17:45:17 2008  Kazuhiro NISHIYAMA  <zn@m...>
+
+	* lib/erb.rb: adjust line number for magic comment.
+
+	* test/erb/test_erb.rb: add tests for def_method.
+
 Fri Jun 27 14:25:52 2008  Nobuyoshi Nakada  <nobu@r...>
 
 	* vm.c (vm_eval_body): if thrown exception is frozen, reraise it to
Index: lib/erb.rb
===================================================================
--- lib/erb.rb	(revision 17609)
+++ lib/erb.rb	(revision 17610)
@@ -736,16 +736,16 @@
     if @safe_level
       th = Thread.start { 
 	$SAFE = @safe_level
-	eval(@src, b, (@filename || '(erb)'), 1)
+	eval(@src, b, (@filename || '(erb)'), 0)
       }
       return th.value
     else
-      return eval(@src, b, (@filename || '(erb)'), 1)
+      return eval(@src, b, (@filename || '(erb)'), 0)
     end
   end
 
   def def_method(mod, methodname, fname='(ERB)')  # :nodoc:
-    mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, 0)
+    mod.module_eval("def #{methodname}\n" + self.src + "\nend\n", fname, -1)
   end
 
   def def_module(methodname='erb')  # :nodoc:
Index: test/erb/test_erb.rb
===================================================================
--- test/erb/test_erb.rb	(revision 17609)
+++ test/erb/test_erb.rb	(revision 17610)
@@ -220,7 +220,7 @@
 
   class Bar; end
 
-  def test_def_method
+  def test_def_erb_method
     assert(! Bar.new.respond_to?('hello'))
     Bar.module_eval do
       extend ERB::DefMethod
@@ -237,6 +237,31 @@
     assert(Bar.new.respond_to?('hello_world'))    
   end
 
+  class DefMethodWithoutFname; end
+  class DefMethodWithFname; end
+
+  def test_def_method_without_filename
+    erb = ERB.new("<% raise ::TestERB::MyError %>")
+    erb.filename = "test filename"
+    assert(! DefMethodWithoutFname.new.respond_to?('my_error'))
+    erb.def_method(DefMethodWithoutFname, 'my_error')
+    e = assert_raise(::TestERB::MyError) {
+       DefMethodWithoutFname.new.my_error
+    }
+    assert_match(/\A\(ERB\):1\b/, e.backtrace[0])
+  end
+
+  def test_def_method_with_fname
+    erb = ERB.new("<% raise ::TestERB::MyError %>")
+    erb.filename = "test filename"
+    assert(! DefMethodWithFname.new.respond_to?('my_error'))
+    erb.def_method(DefMethodWithFname, 'my_error', 'test fname')
+    e = assert_raise(::TestERB::MyError) {
+       DefMethodWithFname.new.my_error
+    }
+    assert_match(/\Atest fname:1\b/, e.backtrace[0])
+  end
+
   def test_escape
     src = <<EOS
 1.<%% : <%="<%%"%>

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]