diff options
author | Jean Boussier <jean.boussier@gmail.com> | 2023-07-17 11:41:46 +0200 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2023-07-20 17:58:52 +0000 |
commit | 460c27dc15b5efc46a74cb2a7809ca3fa6ce72a7 (patch) | |
tree | 15e4da74dc45635380e17ea10d2f3ce4b52c2984 /spec | |
parent | b41fc9b9a4ad2043a9fabce15814eade9b252569 (diff) | |
download | ruby-460c27dc15b5efc46a74cb2a7809ca3fa6ce72a7.tar.gz |
[ruby/syntax_suggest] Handle new eval source location
See https://bugs.ruby-lang.org/issues/19755
In Ruby 3.3, using `eval` without providing a source location
will now default to `"(eval at #{__FILE__}:#{__LINE__})"`.
https://github.com/ruby/syntax_suggest/commit/8e5076472e
Diffstat (limited to 'spec')
-rw-r--r-- | spec/syntax_suggest/integration/ruby_command_line_spec.rb | 2 | ||||
-rw-r--r-- | spec/syntax_suggest/unit/pathname_from_message_spec.rb | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/spec/syntax_suggest/integration/ruby_command_line_spec.rb b/spec/syntax_suggest/integration/ruby_command_line_spec.rb index b41a4c86e3..d3cc4ca9d9 100644 --- a/spec/syntax_suggest/integration/ruby_command_line_spec.rb +++ b/spec/syntax_suggest/integration/ruby_command_line_spec.rb @@ -167,7 +167,7 @@ module SyntaxSuggest out = `#{ruby} -I#{lib_dir} -rsyntax_suggest #{script} 2>&1` expect($?.success?).to be_falsey - expect(out).to include("(eval):1") + expect(out).to match(/\(eval.*\):1/) expect(out).to_not include("SyntaxSuggest") expect(out).to_not include("Could not find filename") diff --git a/spec/syntax_suggest/unit/pathname_from_message_spec.rb b/spec/syntax_suggest/unit/pathname_from_message_spec.rb index 76756efda9..de58acebaa 100644 --- a/spec/syntax_suggest/unit/pathname_from_message_spec.rb +++ b/spec/syntax_suggest/unit/pathname_from_message_spec.rb @@ -43,6 +43,15 @@ module SyntaxSuggest expect(file).to be_falsey end + it "does not output error message on syntax error inside of an (eval at __FILE__:__LINE__)" do + message = "(eval at #{__FILE__}:#{__LINE__}):1: invalid multibyte char (UTF-8) (SyntaxError)\n" + io = StringIO.new + file = PathnameFromMessage.new(message, io: io).call.name + + expect(io.string).to eq("") + expect(file).to be_falsey + end + it "does not output error message on syntax error inside of streamed code" do # An example of streamed code is: $ echo "def foo" | ruby message = "-:1: syntax error, unexpected end-of-input\n" |