diff options
Diffstat (limited to 'test/ruby/test_parse.rb')
| -rw-r--r-- | test/ruby/test_parse.rb | 131 |
1 files changed, 21 insertions, 110 deletions
diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index 957a37eb81..2841e20f6d 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -14,7 +14,6 @@ class TestParse < Test::Unit::TestCase def test_error_line assert_syntax_error('------,,', /\n\z/, 'Message to pipe should end with a newline') - assert_syntax_error("{hello\n world}", /hello/) end def test_else_without_rescue @@ -681,16 +680,6 @@ FOO eval "x = <<""FOO\r\n1\r\nFOO" end assert_equal("1\n", x) - - assert_nothing_raised do - x = eval "<<' FOO'\n""[Bug #19539]\n"" FOO\n" - end - assert_equal("[Bug #19539]\n", x) - - assert_nothing_raised do - x = eval "<<-' FOO'\n""[Bug #19539]\n"" FOO\n" - end - assert_equal("[Bug #19539]\n", x) end def test_magic_comment @@ -1052,22 +1041,6 @@ x = __ENCODING__ assert_syntax_error(" 0b\n", /\^/) end - def test_unclosed_unicode_escape_at_eol_bug_19750 - assert_separately([], "#{<<-"begin;"}\n#{<<~'end;'}") - begin; - assert_syntax_error("/\\u", /too short escape sequence/) - assert_syntax_error("/\\u{", /unterminated regexp meets end of file/) - assert_syntax_error("/\\u{\\n", /invalid Unicode list/) - assert_syntax_error("/a#\\u{\\n/", /invalid Unicode list/) - re = eval("/a#\\u{\n$/x") - assert_match(re, 'a') - assert_not_match(re, 'a#') - re = eval("/a#\\u\n$/x") - assert_match(re, 'a') - assert_not_match(re, 'a#') - end; - end - def test_error_def_in_argument assert_separately([], "#{<<-"begin;"}\n#{<<~"end;"}") begin; @@ -1111,40 +1084,31 @@ x = __ENCODING__ end; end - def test_heredoc_interpolation - var = 1 - - v1 = <<~HEREDOC - something - #{"/#{var}"} - HEREDOC - - v2 = <<~HEREDOC - something - #{_other = "/#{var}"} - HEREDOC + def test_heredoc_interpolation + var = 1 - v3 = <<~HEREDOC - something - #{("/#{var}")} - HEREDOC + v1 = <<~HEREDOC + something + #{"/#{var}"} + HEREDOC - assert_equal "something\n/1\n", v1 - assert_equal "something\n/1\n", v2 - assert_equal "something\n/1\n", v3 - assert_equal v1, v2 - assert_equal v2, v3 - assert_equal v1, v3 - end + v2 = <<~HEREDOC + something + #{_other = "/#{var}"} + HEREDOC - def test_heredoc_unterminated_interpolation - code = <<~'HEREDOC' - <<A+1 - #{ - HEREDOC + v3 = <<~HEREDOC + something + #{("/#{var}")} + HEREDOC - assert_syntax_error(code, /can't find string "A"/) - end + assert_equal "something\n/1\n", v1 + assert_equal "something\n/1\n", v2 + assert_equal "something\n/1\n", v3 + assert_equal v1, v2 + assert_equal v2, v3 + assert_equal v1, v3 + end def test_unexpected_token_error assert_syntax_error('"x"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', /unexpected/) @@ -1154,8 +1118,6 @@ x = __ENCODING__ assert_syntax_error('0000xyz', /^ \^~~\Z/) assert_syntax_error('1.2i1.1', /^ \^~~\Z/) assert_syntax_error('1.2.3', /^ \^~\Z/) - assert_syntax_error('1.', /unexpected end-of-input/) - assert_syntax_error('1e', /expecting end-of-input/) end def test_truncated_source_line @@ -1397,57 +1359,6 @@ x = __ENCODING__ end; end - def test_if_after_class - assert_valid_syntax('module if true; Object end::Kernel; end') - assert_valid_syntax('module while true; break Object end::Kernel; end') - assert_valid_syntax('class if true; Object end::Kernel; end') - assert_valid_syntax('class while true; break Object end::Kernel; end') - end - - def test_escaped_space - assert_syntax_error('x = \ 42', /escaped space/) - end - - def test_label - expected = {:foo => 1} - - code = '{"foo": 1}' - assert_valid_syntax(code) - assert_equal(expected, eval(code)) - - code = '{foo: 1}' - assert_valid_syntax(code) - assert_equal(expected, eval(code)) - - class << (obj = Object.new) - attr_reader :arg - def set(arg) - @arg = arg - end - end - - assert_valid_syntax(code = "#{<<~"do;"}\n#{<<~'end;'}") - do; - obj.set foo: - 1 - end; - assert_equal(expected, eval(code)) - assert_equal(expected, obj.arg) - - assert_valid_syntax(code = "#{<<~"do;"}\n#{<<~'end;'}") - do; - obj.set "foo": - 1 - end; - assert_equal(expected, eval(code)) - assert_equal(expected, obj.arg) - end - - def test_ungettable_gvar - assert_syntax_error('$01234', /not valid to get/) - assert_syntax_error('"#$01234"', /not valid to get/) - end - =begin def test_past_scope_variable assert_warning(/past scope/) {catch {|tag| eval("BEGIN{throw tag}; tap {a = 1}; a")}} |
