diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-15 14:14:13 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2020-12-15 21:36:23 +0900 |
commit | e0bdd54348514ff06df88a9bac88fa56058235a4 (patch) | |
tree | 0ddf16cabf36e7b2c1421f5b3a6392b0e32236ae /test/ripper | |
parent | 2e436982ee64301aceb97e0c8d5b06b94fc7b580 (diff) | |
download | ruby-e0bdd54348514ff06df88a9bac88fa56058235a4.tar.gz |
Ripper: Refined error callbacks [Bug #17345]
Diffstat (limited to 'test/ripper')
-rw-r--r-- | test/ripper/dummyparser.rb | 6 | ||||
-rw-r--r-- | test/ripper/test_lexer.rb | 18 |
2 files changed, 14 insertions, 10 deletions
diff --git a/test/ripper/dummyparser.rb b/test/ripper/dummyparser.rb index ca36985893..fa834bd0f7 100644 --- a/test/ripper/dummyparser.rb +++ b/test/ripper/dummyparser.rb @@ -101,7 +101,11 @@ class DummyParser < Ripper Node.new('valias', a, b) end - def on_alias_error(a) + def on_assign_error(mesg = nil, a) + Node.new('assign_error', a) + end + + def on_alias_error(mesg = nil, a) Node.new('aliaserr', a) end diff --git a/test/ripper/test_lexer.rb b/test/ripper/test_lexer.rb index 05a70d3449..62ea98d1f8 100644 --- a/test/ripper/test_lexer.rb +++ b/test/ripper/test_lexer.rb @@ -147,18 +147,18 @@ class TestRipper::Lexer < Test::Unit::TestCase end BAD_CODE = { - parse_error: 'def req(true) end', - assign_error: 'begin; nil = 1; end', - alias_error: 'begin; alias $x $1; end', - class_name_error: 'class bad; end', - param_error: 'def req(@a) end', + parse_error: ['def req(true) end', %r[unexpected `true']], + assign_error: ['begin; nil = 1; end', %r[assign to nil]], + alias_error: ['begin; alias $x $1; end', %r[number variables]], + class_name_error: ['class bad; end', %r[class/module name]], + param_error: ['def req(@a) end', %r[formal argument.*instance]], } def test_raise_errors_keyword all_assertions do |all| - BAD_CODE.each do |err, code| + BAD_CODE.each do |err, (code, message)| all.for(err) do - assert_raise(SyntaxError) { Ripper.tokenize(code, raise_errors: true) } + assert_raise_with_message(SyntaxError, message) { Ripper.tokenize(code, raise_errors: true) } end end end @@ -166,7 +166,7 @@ class TestRipper::Lexer < Test::Unit::TestCase def test_tokenize_with_syntax_error all_assertions do |all| - BAD_CODE.each do |err, code| + BAD_CODE.each do |err, (code)| all.for(err) do assert_equal "end", Ripper.tokenize(code).last end @@ -176,7 +176,7 @@ class TestRipper::Lexer < Test::Unit::TestCase def test_lex_with_syntax_error all_assertions do |all| - BAD_CODE.each do |err, code| + BAD_CODE.each do |err, (code)| all.for(err) do assert_equal [[1, code.size-3], :on_kw, "end", state(:EXPR_END)], Ripper.lex(code).last end |