diff options
| author | Jean Boussier <byroot@ruby-lang.org> | 2023-07-13 11:49:28 +0200 |
|---|---|---|
| committer | Jean Boussier <jean.boussier@gmail.com> | 2023-07-24 14:51:20 +0200 |
| commit | 43a5c191358699fe8b19314763998cb8ca77ed90 (patch) | |
| tree | efebe1570ca2c77a66bfb81edeb3f86044e63174 /test/ruby | |
| parent | 14d16bdb1ad8e98d76ec2c43b2c1c412ff707d0b (diff) | |
Use the caller location as default filename for eval family of methods
[Feature #19755]
Before (in /tmp/test.rb):
```ruby
Object.class_eval("p __FILE__") # => "(eval)"
```
After:
```ruby
Object.class_eval("p __FILE__") # => "(eval at /tmp/test.rb:1)"
```
This makes it much easier to track down generated code in case
the author forgot to provide a filename argument.
Notes
Notes:
Merged: https://github.com/ruby/ruby/pull/8070
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_beginendblock.rb | 4 | ||||
| -rw-r--r-- | test/ruby/test_eval.rb | 4 | ||||
| -rw-r--r-- | test/ruby/test_exception.rb | 2 | ||||
| -rw-r--r-- | test/ruby/test_method.rb | 38 |
4 files changed, 24 insertions, 24 deletions
diff --git a/test/ruby/test_beginendblock.rb b/test/ruby/test_beginendblock.rb index 2b281645b5..301a746f4a 100644 --- a/test/ruby/test_beginendblock.rb +++ b/test/ruby/test_beginendblock.rb @@ -45,9 +45,9 @@ class TestBeginEndBlock < Test::Unit::TestCase end def test_endblockwarn_in_eval - assert_in_out_err([], "#{<<~"begin;"}\n#{<<~'end;'}", [], ['(eval):2: warning: END in method; use at_exit']) + assert_in_out_err([], "#{<<~"begin;"}\n#{<<~'end;'}", [], ['test.rb:1: warning: END in method; use at_exit']) begin; - eval <<-EOE + eval <<-EOE, nil, "test.rb", 0 def end2 END {} end diff --git a/test/ruby/test_eval.rb b/test/ruby/test_eval.rb index af255c05c8..082d1dc03c 100644 --- a/test/ruby/test_eval.rb +++ b/test/ruby/test_eval.rb @@ -547,8 +547,8 @@ class TestEval < Test::Unit::TestCase end def test_eval_location_binding - assert_equal(['(eval)', 1], eval("[__FILE__, __LINE__]", nil)) - assert_equal(['(eval)', 1], eval("[__FILE__, __LINE__]", binding)) + assert_equal(["(eval at #{__FILE__}:#{__LINE__})", 1], eval("[__FILE__, __LINE__]", nil)) + assert_equal(["(eval at #{__FILE__}:#{__LINE__})", 1], eval("[__FILE__, __LINE__]", binding)) assert_equal(['foo', 1], eval("[__FILE__, __LINE__]", nil, 'foo')) assert_equal(['foo', 1], eval("[__FILE__, __LINE__]", binding, 'foo')) assert_equal(['foo', 2], eval("[__FILE__, __LINE__]", nil, 'foo', 2)) diff --git a/test/ruby/test_exception.rb b/test/ruby/test_exception.rb index 0f39a15b2d..03f0d58581 100644 --- a/test/ruby/test_exception.rb +++ b/test/ruby/test_exception.rb @@ -1310,7 +1310,7 @@ $stderr = $stdout; raise "\x82\xa0"') do |outs, errs, status| def test_backtrace_in_eval bug = '[ruby-core:84434] [Bug #14229]' - assert_in_out_err(['-e', 'eval("raise")'], "", [], /^\(eval\):1:/, bug) + assert_in_out_err(['-e', 'eval("raise")'], "", [], /^\(eval at .*\):1:/, bug) end def test_full_message diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index 80b8fe277b..9838ebfa66 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -1431,25 +1431,25 @@ class TestMethod < Test::Unit::TestCase end def test_argument_error_location - body = <<-'END_OF_BODY' - eval <<-'EOS' - $line_lambda = __LINE__; $f = lambda do - _x = 1 - end - $line_method = __LINE__; def foo - _x = 1 - end - begin - $f.call(1) - rescue ArgumentError => e - assert_equal "(eval):#{$line_lambda.to_s}:in `block in <main>'", e.backtrace.first - end - begin - foo(1) - rescue ArgumentError => e - assert_equal "(eval):#{$line_method}:in `foo'", e.backtrace.first - end - EOS + body = <<~'END_OF_BODY' + eval <<~'EOS', nil, "main.rb" + $line_lambda = __LINE__; $f = lambda do + _x = 1 + end + $line_method = __LINE__; def foo + _x = 1 + end + begin + $f.call(1) + rescue ArgumentError => e + assert_equal "main.rb:#{$line_lambda}:in `block in <main>'", e.backtrace.first + end + begin + foo(1) + rescue ArgumentError => e + assert_equal "main.rb:#{$line_method}:in `foo'", e.backtrace.first + end + EOS END_OF_BODY assert_separately [], body |
