diff options
author | Kevin Newton <kddnewton@gmail.com> | 2024-02-05 15:41:46 -0500 |
---|---|---|
committer | git <svn-admin@ruby-lang.org> | 2024-02-07 16:54:34 +0000 |
commit | aad3c36bdfe68c429cf612542a7eb3c94c17c483 (patch) | |
tree | 70cff5280c6d97d131501a9e8dc774c33ac3e31c /test | |
parent | aed052ce9d9eeeccecb12c444aa7327d1e078a51 (diff) |
[ruby/prism] Support for Ruby 2.7
https://github.com/ruby/prism/commit/1a15b70a8e
Diffstat (limited to 'test')
-rw-r--r-- | test/prism/errors_test.rb | 116 | ||||
-rw-r--r-- | test/prism/test_helper.rb | 13 |
2 files changed, 69 insertions, 60 deletions
diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb index ea5ecb7cce..f7231b6a44 100644 --- a/test/prism/errors_test.rb +++ b/test/prism/errors_test.rb @@ -588,43 +588,45 @@ module Prism ] end - def test_cannot_assign_to_a_reserved_numbered_parameter - expected = BeginNode( - Location(), - StatementsNode([ - LocalVariableWriteNode(:_1, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_2, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_3, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_4, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_5, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_6, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_7, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_8, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_9, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), - LocalVariableWriteNode(:_10, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()) - ]), - nil, - nil, - nil, - Location() - ) - source = <<~RUBY - begin - _1=:a;_2=:a;_3=:a;_4=:a;_5=:a - _6=:a;_7=:a;_8=:a;_9=:a;_10=:a + if RUBY_VERSION >= "3.0" + def test_cannot_assign_to_a_reserved_numbered_parameter + expected = BeginNode( + Location(), + StatementsNode([ + LocalVariableWriteNode(:_1, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_2, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_3, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_4, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_5, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_6, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_7, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_8, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_9, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()), + LocalVariableWriteNode(:_10, 0, Location(), SymbolNode(SymbolFlags::FORCED_US_ASCII_ENCODING, Location(), Location(), nil, "a"), Location()) + ]), + nil, + nil, + nil, + Location() + ) + source = <<~RUBY + begin + _1=:a;_2=:a;_3=:a;_4=:a;_5=:a + _6=:a;_7=:a;_8=:a;_9=:a;_10=:a + end + RUBY + assert_errors expected, source, [ + ["_1 is reserved for numbered parameters", 8..10], + ["_2 is reserved for numbered parameters", 14..16], + ["_3 is reserved for numbered parameters", 20..22], + ["_4 is reserved for numbered parameters", 26..28], + ["_5 is reserved for numbered parameters", 32..34], + ["_6 is reserved for numbered parameters", 40..42], + ["_7 is reserved for numbered parameters", 46..48], + ["_8 is reserved for numbered parameters", 52..54], + ["_9 is reserved for numbered parameters", 58..60], + ] end - RUBY - assert_errors expected, source, [ - ["_1 is reserved for numbered parameters", 8..10], - ["_2 is reserved for numbered parameters", 14..16], - ["_3 is reserved for numbered parameters", 20..22], - ["_4 is reserved for numbered parameters", 26..28], - ["_5 is reserved for numbered parameters", 32..34], - ["_6 is reserved for numbered parameters", 40..42], - ["_7 is reserved for numbered parameters", 46..48], - ["_8 is reserved for numbered parameters", 52..54], - ["_9 is reserved for numbered parameters", 58..60], - ] end def test_do_not_allow_trailing_commas_in_method_parameters @@ -1344,23 +1346,25 @@ module Prism ] end - def test_writing_numbered_parameter - assert_errors expression("-> { _1 = 0 }"), "-> { _1 = 0 }", [ - ["_1 is reserved for numbered parameters", 5..7] - ] - end + if RUBY_VERSION >= "3.0" + def test_writing_numbered_parameter + assert_errors expression("-> { _1 = 0 }"), "-> { _1 = 0 }", [ + ["_1 is reserved for numbered parameters", 5..7] + ] + end - def test_targeting_numbered_parameter - assert_errors expression("-> { _1, = 0 }"), "-> { _1, = 0 }", [ - ["_1 is reserved for numbered parameters", 5..7] - ] - end + def test_targeting_numbered_parameter + assert_errors expression("-> { _1, = 0 }"), "-> { _1, = 0 }", [ + ["_1 is reserved for numbered parameters", 5..7] + ] + end - def test_defining_numbered_parameter - error_messages = ["_1 is reserved for numbered parameters"] + def test_defining_numbered_parameter + error_messages = ["_1 is reserved for numbered parameters"] - assert_error_messages "def _1; end", error_messages - assert_error_messages "def self._1; end", error_messages + assert_error_messages "def _1; end", error_messages + assert_error_messages "def self._1; end", error_messages + end end def test_double_scope_numbered_parameters @@ -1409,11 +1413,13 @@ module Prism ] end - def test_numbered_parameters_in_block_arguments - source = "foo { |_1| }" - assert_errors expression(source), source, [ - ["_1 is reserved for numbered parameters", 7..9], - ] + if RUBY_VERSION >= "3.0" + def test_numbered_parameters_in_block_arguments + source = "foo { |_1| }" + assert_errors expression(source), source, [ + ["_1 is reserved for numbered parameters", 7..9], + ] + end end def test_conditional_predicate_closed diff --git a/test/prism/test_helper.rb b/test/prism/test_helper.rb index a16de14cbe..28b0725d6f 100644 --- a/test/prism/test_helper.rb +++ b/test/prism/test_helper.rb @@ -43,15 +43,18 @@ module Prism ) end when SourceFileNode - deconstructed_expected = expected.deconstruct_keys(nil) - deconstructed_actual = actual.deconstruct_keys(nil) - assert_equal deconstructed_expected.keys, deconstructed_actual.keys + expected_deconstruct = expected.deconstruct_keys(nil) + actual_deconstruct = actual.deconstruct_keys(nil) + assert_equal expected_deconstruct.keys, actual_deconstruct.keys # Filepaths can be different if test suites were run on different # machines. We accommodate for this by comparing the basenames, and not # the absolute filepaths. - assert_equal deconstructed_expected.except(:filepath), deconstructed_actual.except(:filepath) - assert_equal File.basename(deconstructed_expected[:filepath]), File.basename(deconstructed_actual[:filepath]) + expected_filepath = expected_deconstruct.delete(:filepath) + actual_filepath = actual_deconstruct.delete(:filepath) + + assert_equal expected_deconstruct, actual_deconstruct + assert_equal File.basename(expected_filepath), File.basename(actual_filepath) when Node deconstructed_expected = expected.deconstruct_keys(nil) deconstructed_actual = actual.deconstruct_keys(nil) |