summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-02-05 15:41:46 -0500
committergit <svn-admin@ruby-lang.org>2024-02-07 16:54:34 +0000
commitaad3c36bdfe68c429cf612542a7eb3c94c17c483 (patch)
tree70cff5280c6d97d131501a9e8dc774c33ac3e31c /test
parentaed052ce9d9eeeccecb12c444aa7327d1e078a51 (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.rb116
-rw-r--r--test/prism/test_helper.rb13
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)