mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/error_highlight] Add a test to check if it is robust against a spoofed filename
Previously, RubyVM::AST.of opened a wrong file if the iseq's file path is spoofed. ``` module Dummy binding.irb end ``` ``` $ ruby test.rb From: test.rb @ line 2 : 1: module Dummy => 2: binding.irb 3: end irb(Dummy):001:0> foo /home/mame/work/ruby/local/lib/ruby/3.1.0/error_highlight/base.rb:412:in `spot_colon2': undefined method `last_lineno' for nil:NilClass (NoMethodError) if nd_parent.last_lineno == @node.last_lineno ^^^^^^^^^^^^ ``` Found by @kateinoigakukun This issue is already fixed in the interpreter side. This change just adds a test for the case. https://github.com/ruby/error_highlight/commit/f3626b9032
This commit is contained in:
parent
11b1ebe606
commit
e9a4cc02b4
1 changed files with 17 additions and 0 deletions
|
@ -1207,4 +1207,21 @@ undefined method `foo' for nil:NilClass
|
|||
end
|
||||
end
|
||||
|
||||
def test_spoofed_filename
|
||||
Tempfile.create(["error_highlight_test", ".rb"], binmode: true) do |tmp|
|
||||
tmp << "module Dummy\nend\n"
|
||||
tmp.close
|
||||
|
||||
assert_error_message(NameError, <<~END) do
|
||||
undefined local variable or method `foo' for "dummy":String
|
||||
END
|
||||
|
||||
"dummy".instance_eval do
|
||||
eval <<-END, nil, tmp.path
|
||||
foo
|
||||
END
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Reference in a new issue