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/