summaryrefslogtreecommitdiff
path: root/test/ripper/test_lexer.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/ripper/test_lexer.rb')
-rw-r--r--test/ripper/test_lexer.rb32
1 files changed, 29 insertions, 3 deletions
diff --git a/test/ripper/test_lexer.rb b/test/ripper/test_lexer.rb
index 73941d162a..05a70d3449 100644
--- a/test/ripper/test_lexer.rb
+++ b/test/ripper/test_lexer.rb
@@ -146,15 +146,41 @@ class TestRipper::Lexer < Test::Unit::TestCase
assert_equal [[1, 17], :on_embexpr_end, "}", state(:EXPR_ARG)], token
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',
+ }
+
def test_raise_errors_keyword
- assert_raise(SyntaxError) { Ripper.tokenize('def req(true) end', raise_errors: true) }
+ all_assertions do |all|
+ BAD_CODE.each do |err, code|
+ all.for(err) do
+ assert_raise(SyntaxError) { Ripper.tokenize(code, raise_errors: true) }
+ end
+ end
+ end
end
def test_tokenize_with_syntax_error
- assert_equal "end", Ripper.tokenize("def req(true) end").last
+ all_assertions do |all|
+ BAD_CODE.each do |err, code|
+ all.for(err) do
+ assert_equal "end", Ripper.tokenize(code).last
+ end
+ end
+ end
end
def test_lex_with_syntax_error
- assert_equal [[1, 14], :on_kw, "end", state(:EXPR_END)], Ripper.lex("def req(true) end").last
+ all_assertions do |all|
+ 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
+ end
+ end
end
end