summaryrefslogtreecommitdiff
path: root/test/prism/ruby
diff options
context:
space:
mode:
Diffstat (limited to 'test/prism/ruby')
-rw-r--r--test/prism/ruby/parser_test.rb13
-rw-r--r--test/prism/ruby/ripper_test.rb32
2 files changed, 13 insertions, 32 deletions
diff --git a/test/prism/ruby/parser_test.rb b/test/prism/ruby/parser_test.rb
index 648c44e77a..c972f0962b 100644
--- a/test/prism/ruby/parser_test.rb
+++ b/test/prism/ruby/parser_test.rb
@@ -65,15 +65,6 @@ module Prism
# 1.. && 2
"ranges.txt",
- # https://bugs.ruby-lang.org/issues/20478
- "3.4/circular_parameters.txt",
-
- # Cannot yet handling leading logical operators.
- "4.0/leading_logical.txt",
-
- # Ruby >= 4.0 specific syntax
- "4.0/endless_methods_command_call.txt",
-
# https://bugs.ruby-lang.org/issues/21168#note-5
"command_method_call_2.txt",
]
@@ -148,7 +139,7 @@ module Prism
"whitequark/space_args_block.txt"
]
- Fixture.each(except: skip_syntax_error) do |fixture|
+ Fixture.each_for_version(except: skip_syntax_error, version: "3.3") do |fixture|
define_method(fixture.test_name) do
assert_equal_parses(
fixture,
@@ -171,7 +162,7 @@ module Prism
if RUBY_VERSION >= "3.3"
def test_current_parser_for_current_ruby
- major, minor = current_major_minor.split(".")
+ major, minor = CURRENT_MAJOR_MINOR.split(".")
# Let's just hope there never is a Ruby 3.10 or similar
expected = major.to_i * 10 + minor.to_i
assert_equal(expected, Translation::ParserCurrent.new.version)
diff --git a/test/prism/ruby/ripper_test.rb b/test/prism/ruby/ripper_test.rb
index 400139acc0..bd63302efc 100644
--- a/test/prism/ruby/ripper_test.rb
+++ b/test/prism/ruby/ripper_test.rb
@@ -8,44 +8,34 @@ module Prism
class RipperTest < TestCase
# Skip these tests that Ripper is reporting the wrong results for.
incorrect = [
- # Not yet supported.
- "4.0/leading_logical.txt",
-
# Ripper incorrectly attributes the block to the keyword.
- "seattlerb/block_break.txt",
- "seattlerb/block_next.txt",
"seattlerb/block_return.txt",
- "whitequark/break_block.txt",
- "whitequark/next_block.txt",
"whitequark/return_block.txt",
- # Ripper is not accounting for locals created by patterns using the **
- # operator within an `in` clause.
- "seattlerb/parse_pattern_058.txt",
-
# Ripper cannot handle named capture groups in regular expressions.
"regex.txt",
- "regex_char_width.txt",
- "whitequark/lvar_injecting_match.txt",
# Ripper fails to understand some structures that span across heredocs.
"spanning_heredoc.txt",
- "3.3-3.3/block_args_in_array_assignment.txt",
- "3.3-3.3/it_with_ordinary_parameter.txt",
- "3.3-3.3/keyword_args_in_array_assignment.txt",
- "3.3-3.3/return_in_sclass.txt",
-
- # https://bugs.ruby-lang.org/issues/20478
+ # Ripper interprets circular keyword arguments as method calls.
"3.4/circular_parameters.txt",
- # https://bugs.ruby-lang.org/issues/17398#note-12
+ # Ripper doesn't emit `args_add_block` when endless method is prefixed by modifier.
"4.0/endless_methods_command_call.txt",
# https://bugs.ruby-lang.org/issues/21168#note-5
"command_method_call_2.txt",
]
+ if RUBY_VERSION.start_with?("3.3.")
+ incorrect += [
+ "whitequark/lvar_injecting_match.txt",
+ "seattlerb/parse_pattern_058.txt",
+ "regex_char_width.txt",
+ ]
+ end
+
# Skip these tests that we haven't implemented yet.
omitted = [
"dos_endings.txt",
@@ -68,7 +58,7 @@ module Prism
"whitequark/slash_newline_in_heredocs.txt"
]
- Fixture.each(except: incorrect | omitted) do |fixture|
+ Fixture.each_for_current_ruby(except: incorrect | omitted) do |fixture|
define_method(fixture.test_name) { assert_ripper(fixture.read) }
end