Merge pull request #45116 from ghiculescu/helper_method_backtrace

This commit is contained in:
Jean Boussier 2022-05-17 20:20:27 -07:00 committed by GitHub
commit 4113ec933e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 20 additions and 4 deletions

View File

@ -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

View File

@ -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