mirror of https://github.com/rails/rails
Merge pull request #45116 from ghiculescu/helper_method_backtrace
This commit is contained in:
commit
4113ec933e
|
@ -84,10 +84,13 @@ module AbstractController
|
|||
file, line = location.path, location.lineno
|
||||
|
||||
methods.each do |method|
|
||||
_helpers_for_modification.class_eval <<~ruby_eval, file, line
|
||||
def #{method}(*args, &block) # def current_user(*args, &block)
|
||||
controller.send(:'#{method}', *args, &block) # controller.send(:'current_user', *args, &block)
|
||||
end # end
|
||||
# def current_user(*args, &block)
|
||||
# controller.send(:'current_user', *args, &block)
|
||||
# end
|
||||
_helpers_for_modification.class_eval <<~ruby_eval.lines.map(&:strip).join(";"), file, line
|
||||
def #{method}(*args, &block)
|
||||
controller.send(:'#{method}', *args, &block)
|
||||
end
|
||||
ruby2_keywords(:'#{method}')
|
||||
ruby_eval
|
||||
end
|
||||
|
|
|
@ -98,6 +98,9 @@ class HelperTest < ActiveSupport::TestCase
|
|||
def delegate_method() end
|
||||
def delegate_method_arg(arg); arg; end
|
||||
def delegate_method_kwarg(hi:); hi; end
|
||||
def method_that_raises
|
||||
raise "an error occurred"
|
||||
end
|
||||
end
|
||||
|
||||
def setup
|
||||
|
@ -145,6 +148,16 @@ class HelperTest < ActiveSupport::TestCase
|
|||
assert_equal(:there, @controller_class.new.helpers.delegate_method_kwarg(hi: :there))
|
||||
end
|
||||
|
||||
def test_helper_method_with_error_has_correct_backgrace
|
||||
@controller_class.helper_method :method_that_raises
|
||||
expected_backtrace_pattern = "#{__FILE__}:#{__LINE__ - 1}"
|
||||
|
||||
error = assert_raises(RuntimeError) do
|
||||
@controller_class.new.helpers.method_that_raises
|
||||
end
|
||||
assert_not_nil error.backtrace.find { |line| line.include?(expected_backtrace_pattern) }
|
||||
end
|
||||
|
||||
def test_helper_attr
|
||||
assert_nothing_raised { @controller_class.helper_attr :delegate_attr }
|
||||
assert_includes master_helper_methods, :delegate_attr
|
||||
|
|
Loading…
Reference in New Issue